20

私は現在、PHP/FastCGI のいくつかのコピーを実行しており、APC が有効になっています (問題がある場合は、Apache+mod_fastcgi の下で)。プロセス間でキャッシュを共有できますか? すでに共有されているかどうかを確認するにはどうすればよいですか? (iniの設定が関係していると思いますが、apc.mmap_file_mask使い方がわかりません。)

(現時点で共有されていないと私が考える理由の 1 つはapc.mmap_file_mask、apc.php Web インターフェイスによって報告されたように、リロード時に約 3 つの異なる値の間で切り替わるためです。)

4

3 に答える 3

20

APC は現在、fastcgi または fcgid で実行されている複数の php-cgi ワーカー間でキャッシュを共有していません。詳細については、この機能リクエストを参照してください: 「この動作は現時点で意図されたものです」。

1 つの回避策は、PHP が独自のワーカーを管理できるようにすることです。これは、ラッパー スクリプトで PHP_FCGI_CHILDREN 環境変数を使用して行うことができます (そのための Web 上の多くの例)。また、この方法を使用する場合は、fastcgi/fcgid が複数の PHP プロセスを生成するのを停止する必要があります。

PHP_FCGI_CHILDREN の欠点は、ワーカーの管理が fcgid/fastcgi によって提供されるものほど良くないことです。

それで、そこにいます。fcgid/fastcgi 環境での APC は、各 PHP ワーカーに独自のキャッシュを与えるか、PHP の組み込み管理を支持して fcgid/fastcgi のプロセス生成を無効にすることを意味します。これが将来変わることを期待しましょう。

于 2009-06-16T23:03:46.170 に答える
10

完璧ではありませんが、Domster が提案した方法が最適です。エラーなしで、ボリュームの少ないサイトで短時間これを行っています。昨夜、共有オペコード キャッシュを使用して mod_fastcgi をセットアップする方法の詳細な説明を書きました。

新しい mod_fcgid ではなく mod_fastcgi を使用することが非常に重要であることがわかりました。これは、PHP が PHP_FCGI_CHILDREN を介して生成した子の数に関係なく、mod_fcgid は一度に 1 つのリクエストしか PHP プロセスに送信しないためです。

于 2009-07-07T18:43:44.417 に答える
0

キャッシュはプロセス間で共有する必要があります。phpinfo() と apc.php の呼び出しの間で、mmap ファイルに同じ値が表示されるはずです。推奨されるデフォルトの APC 構成設定で動作しています。

extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.enable_cli=1

設定を投稿することもできます。mmap_file_mask は、許可されている値の 1 つでなければならないという警告を見てきました。したがって、これらの X の 1 つが欠けている場合、何が得られるかはわかりません。

おそらく、fastcgi + apache 構成が関係しています。

于 2009-02-28T19:22:30.057 に答える