[PHP-users 13365] Re: PHPファイルがダウンロードされてしまいます。

Moriyoshi Koizumi php-users@php.gr.jp
Tue, 18 Feb 2003 03:23:43 +0900


小泉です。

いまメールをブラウズしていたら気づいたので一言。

On Mon, 17 Feb 2003 19:56:56 +0900
月島 <moon@s20.xrea.com> wrote:

> --enable-module=so にしてApacheをインストールして、PHPをDSOとして
> インストールしてみてはいかがですか。
> ちなみに私のところでは、
> ./configure --prefix=/usr/local/apache2/ --enable-modules=all --with-mpm=worker
> にしております。

mpm=worker または mpm=perchild で DSO版の php を運用するのは
とても危険です。

これらをどうしても活用したいというならば
必ず php の configure のオプションで

--enable-experimental-zts (php5 の場合は --enable-maintainer-zts)

を指定してください。

というのは、マニュアルにもありますが、 
すべてのモジュールが完全なスレッドセーフではないからで、
かつ、ZTS (Zend Thread Safe) モードが十分にテストされていないという
事実もあります。

いずれにせよ、従来型の prefork を利用することを強くおすすめします。
保証はできませんが、prefork なら、まあ、大丈夫でしょう。

パフォーマンスについてですが、ZTS というのはいわゆる
スレッドローカルコンテキストレイヤーで、性質上、
極端にスクリプトの実行速度を落とすことが確認されています。
なので、worker モデルにするメリットは
動的コンテンツの少ないサイトでの運用以外では、
事実上あまりないと考えて下さい。

なお、これと似たようなことが win32 版の Apache DSO モジュールにも
言えます。というか、この文脈では、win32 であれば、Apache1 も Apache2 も
ISAPIモジュールも同様に望ましくありません。

実運用では Apache1 系列を使ってくれ、というのが本家の開発者の
コンセンサスのようです。