read.cgi再開発スレ Part2at OPERATE
read.cgi再開発スレ Part2 - 暇つぶし2ch287:▲ ◆cZfSunOs.U
05/07/24 14:12:59 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/ URLリンク(live22priv.2ch.net)
    ProxyPassReverse /livejupiter/ URLリンク(live22priv.2ch.net)

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

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

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

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


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch