apacheのスレッドによる動作とphp
- 2007年5月26日(土) 12:06 JST
- 投稿者:white
通常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を作りなおしています。
- phpのSRPMパッケージを入手
- SRPMパッケージを展開
- php.spec中のconfigureオプションの下部に、以下の2行を追加
--with-tsm-pthreads \
--enable-maintainer-zts \
- rpmbuildコマンドでspecファイルからrpmを作る
- できたrpmを上書きインストールする
これでスレッド対応のapacheでもphpがうまく表示されるようになります。
コメント (0件)
- vx-xv Geeklog
- http://www.vx-xv.com/geeklog/article.php/20070526120621288