■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50

read.cgi再開発スレ Part2

287 :◆cZfSunOs.U :2005/07/24(日) 14:12:59 ID:6ksh67gl0
#include "apr_buckets.h"
#include "apr_date.h"
#include "apr_errno.h"
#include "apr_strings.h"
#include "apr_tables.h"
#include "util_filter.h"

#include "http_request.h"

static apr_status_t rdat_filter(ap_filter_t *f, apr_bucket_brigade *b)
{
    return ap_save_brigade(f, (apr_bucket_brigade **)&f->ctx, &b, f->r->pool);
}

static apr_status_t read_dat(CH2READ *ch2, request_rec *r)
{
    int rv;
    ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
    ap_filter_t f = {&frec, NULL, NULL, r, r->connection};
    char *uri = apr_pstrcat(r->pool, "/", ch2->zz_bbs, "/dat/", ch2->zz_key, ".dat", NULL);
    request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f);

    if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) {
        apr_brigade_pflatten(f.ctx, &ch2->BigBuffer, &ch2->zz_fileSize, r->pool);
        apr_brigade_destroy(f.ctx);
        ch2->zz_fileLastmod = rdat->mtime ? rdat->mtime
            : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified"));
    }
    ap_destroy_sub_req(rdat);

    return rv ? APR_ENOENT : APR_SUCCESS;
}
----------------------------------------------------------------------
雪だるま版 read.cgi での dat 読み込みは↑な感じかなぁ,というのを何となく.
普通の CGI だと localhost にソケットで接続して(ryってところでしょうけど,
DSO ではサブリクエストを使えばいいんでソケット不要ですね.
ただ,mod_rewrite ではサブリクエストで reverse proxy を使えないという
制限があるんで,ProxyPass ディレクティブで↓のように指定で.

    ProxyPass /livejupiter/kako !
    ProxyPass /livejupiter/_datArea !
    ProxyPass /livejupiter/ http://live22priv.2ch.net/livejupiter/
    ProxyPassReverse /livejupiter/ http://live22priv.2ch.net/livejupiter/

    CacheDisable /livejupiter/kako
    CacheDisable /livejupiter/_datArea
    CacheEnable disk /livejupiter/

過去ログ・dat 落ちログに関しては

・ ライブな dat のように転送 (live22 -> live22x) の即時性は要求されない.
・ mod_disk_cache のキャッシュ領域を /md に確保するとして,
  即時性が要求されないデータで /md を食い潰すのはもったいない.

ということで,それらは rsync でマターリ転送することにすれば,
offlaw.cgi は無修正で Ok でしょうかね.

284KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30