7

特定のパスをキャッシュしないようにするには、APCオペコードキャッシングでapc.filtersパラメーターをどのように使用しますか?たとえば、次のパスの下にあるすべてのものに対してキャッシュをアクティブにします。

"/ var / www / vhosts"

次のようなパスを除外します

"/ usr / share / psa-horde /"

使ってみました

apc.cache_by_default = 0
apc.filters = "+/var/www/vhosts"

apc.cache_by_default = 1
apc.filters = "-/usr/share/psa-horde/"

しかし、どちらも私が期待したようには機能しませんでした。

http://www.php.net/manual/en/apc.configuration.php#ini.apc.filters

フィルタは「+/var / www / vhosts / *」(ワイルドカードに注意)のようなものにする必要がありますか?フィルタの動作方法が原因で、これは不可能だと思います。

照合に使用されるファイル名は、絶対パスではなく、include/requireに渡されるファイル名であることに注意してください。

アイデアやサンプル構成はありますか?

4

5 に答える 5

6

フィルタは、POSIX拡張正規表現のコンマ区切りのリストである必要があります。2回目の試行で得られたものは、正確なパス/ usr / share / psa-horde /にのみ一致し、/ usr / share / psa-horde/somethingまたは/usr/share/psa-horde/anotherfile.phpには一致しないと思います。

以下は、サブフォルダ内のすべてに一致する必要があります

apc.filters = "-/usr/share/psa-horde/.*"
于 2009-10-26T23:11:58.157 に答える
5

応答が非常に遅いですが、他の誰かがこの問題を抱えている場合に備えて(Pleskボックスを実行している/実行している可能性があると推測します。これが私がこれに遭遇した理由です)。

最善の策は、ロードされたphpモジュールのリストにAPCを 含めることapc.enabled 0ですが、マスターphp.iniに含めることです。次に、有効にする仮想ホストごとに、それぞれphp_admin_value apc.enabled 1を有効にするために追加します。大量のサイトがある場合は問題になる可能性がありますが、機能するのはごくわずかです。

于 2010-09-22T23:28:27.020 に答える
2

pnomolosのソリューションは、異なるvhostがある場合は機能しますが、vhostが1つしかなく、実際にディレクトリごとにキャッシュを制御したい場合は機能しません。

このバグレポートは、最良の解決策を示しています:https ://bugs.php.net/bug.php?id=57064

APCを有効にして、に設定しapc.cache_by_defaultます。次に、Apache構成で、ブロック内を使用して、必要な場所でAPCキャッシングを有効にすることができます。0php.iniphp_admin_setting apc.cache_by_default 1Directory

于 2013-08-28T16:34:15.753 に答える
0

apc.filtersは正規表現で機能するため、ワイルドカードパスはapc.filters = "-/ usr / share /psa-horde/.*"として指定する必要があります。

于 2011-12-13T11:22:40.020 に答える
0

使用済み:

apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"
于 2013-09-09T09:24:27.917 に答える