タグ

apacheモジュールに関するjp-mykのブックマーク (5)

  • apacheモジュールで共有メモリを使ったプロセス間通信

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 apacheモジュールでプロセス間通信を行う場合、共有メモリを使ってやる手法がある。 apacheモジュールでよく使われるaprで、共有メモリ用の関数が用意されているため、実装に問題が無い以上はaprを使った方が楽だ。 では具体的な使い方を。 apacheモジュールで共有メモリを使う場合は、apache起動時のレジスターフックのpost_configのタイミングで共有メモリ領域を確保してやるといい。 後は、確保時にディレクティブ毎の共有メモリの領域を覚えておき、起動後のリクエスト・レスポンス時のハンドラーで、それぞれの共有メモリ領域を呼び出してやればいい。 まずは、グローバルで共有メモリ領域へのポインタのベースとなる変数と、共有メモリ領域を宣

    apacheモジュールで共有メモリを使ったプロセス間通信
  • apacheモジュールでmutexを使った排他制御を実装

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 apacheモジュールでプロセス間通信を行う場合に、共有メモリを使うと色々問題がでてくる。 preforkの性質上、複数のapache子プロセスがフォークされており、それらがそれぞれリクエストに対する処理を行うため、共有メモリ領域の書き込み時に衝突が起きたりして、データに齟齬が発生してくる。 それを防ぐのが排他処理だ。 今回は、aprで実装済みのglobal mutexを使って排他制御する方法を説明する。 まずは、グローバでmutexを宣言する。 #include "apr_global_mutex.h" #include "unixd.h" apr_global_mutex_t *mutex; 次に、apache起動時のpost_confi

    apacheモジュールでmutexを使った排他制御を実装
  • Apacheモジュールで排他制御を行う - ハリボテのブログ

    前回,Apacheモジュールで共有メモリを使うには - 房総爆釣日記で作ったモジュールに排他制御の機能を追加します. まず,次の二つのヘッダファイルを追加します. #include "apr_global_mutex.h" #include "unixd.h" ServerConfig構造体に,mutexが使うファイルの名前と,mutexのアドレスを格納するメンバを追加します. typedef struct ServerConfig{ char *mutex_path; apr_global_mutex_t *mutex; char *shm_path; apr_shm_t *shm_data; int *access_count; }sconfig; post_configステージでcreate mutexします. //Create global mutex status = apr_g

    Apacheモジュールで排他制御を行う - ハリボテのブログ
  • Apacheモジュールで共有メモリを使うには - ハリボテのブログ

    訳あって,Apacheモジュールを書くことに. Apacheモジュール開発の導入に関してはDSAS開発者の部屋:apache module 開発事始めが大変参考になりました. ここではAPR(Apache Portable Runtime)の機能を使って,共有メモリを使う方法を書きます. このモジュールはApache(複数プロセス)が,アクセスを受けた回数をエラーログに出力するという単純なもの. なお簡単のためにディレクティブは使用しません.(キリッ 排他制御もやってません.(キリッ でも排他制御はそのうち触れたい. では早速ソースを... #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "ap_config.h" #include "http_log.h" #include "

    Apacheモジュールで共有メモリを使うには - ハリボテのブログ
  • Apache Module

    CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech

    Apache Module
  • 1