メニューをスキップして本文へ


ここから本文

apacheのスレッドによる動作とphp

  • 2007年5月26日(土) 12:06 JST
  • 投稿者:
    white
  • 閲覧件数
    2,022
Linux技術ノウハウ 通常apache 2.0はプロセスをpreforkするモードで動作します。
リクエストが来ると、事前にforkされていたプロセスへ処理を引き渡すという仕組みです。
しかし、プロセスよりもスレッドで処理する方が、リソースの使用効率が良くなります。
apacheにもスレッドでリクエストを処理する方法がありますが、モジュールをスレッドに
対応させる必要があるので、あまり広く使われていないようです。

FC6で試してみましたが、私の環境ではphpをスレッド対応に作りなおす必要がありました。

続きは本文に FC6のapacheは、/etc/sysconfig/httpdに以下の設定をしてやるだけで、スレッドによる処理をするようになります。

HTTPD=/usr/sbin/httpd.worker


しかし、phpはスレッドによる処理の引渡に対応していないので、phpに対応したページを表示しようとすると、エラーになります。(画面には表示されず、error.logに記録されます)

phpを作りなおすには、RPMを作りなおす方法と、手で/usr/local等にインストールする方法がありますが、
私は後のメンテを考えて、RPMを作りなおしています。

  1. phpのSRPMパッケージを入手
  2. SRPMパッケージを展開
  3. php.spec中のconfigureオプションの下部に、以下の2行を追加
            --with-tsm-pthreads \
            --enable-maintainer-zts \
  4. rpmbuildコマンドでspecファイルからrpmを作る
  5. できたrpmを上書きインストールする
これでスレッド対応のapacheでもphpがうまく表示されるようになります。

トラックバック

このエントリのトラックバックURL:
http://www.vx-xv.com/geeklog/trackback.php?id=20070526120621288
表示形式
コメント投稿

コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。

サブメニュー1をスキップしてサブメニュー2へ

記事カテゴリ

楽天

ログイン

ログイン

ここからサブメニュー2

サブメニュー2をスキップしてフッタへ


ここからフッタ