2009-10-26 8 views
7

特定のパスをキャッシュしないためにAPCオペコードキャッシングでapc.filtersパラメータを使用するにはどうすればよいですか?例えば、私はキャッシュがパスの下に何のために積極的になりたい:パス別apc.filters?

"は/ var/www /のバーチャルホスト"

のようなパスを除外する "を/ usr/share/PSA-大群/"

私は

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 /のバーチャルホスト/ *" のようなものであるべき?私は、これは方法のため作品をフィルタすることはできません怖い:

注意ファイル名は マッチングに使用することを に渡さ1は/絶対 パス、必要ないなどがあります。

アイデアや設定例はありますか?

答えて

6

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

次のサブフォルダ

apc.filters = "-/usr/share/psa-horde/.*" 
+0

うーん、良いコールが、私は完全なパスが必要と文で使用された場合、それはファイル名のみのために働くと思う:「マッチングのために使用されるファイル名が渡された一つであることに注意してください絶対パスではなく含める/要求する」例えば、 – typeoneerror

+0

。 " -/var/www/vhosts/myhostname.com/svn/public/openx /.*"を試みましたが、このディレクトリのファイルはまだキャッシュされています。 – typeoneerror

+0

"一致に使用されるファイル名は、絶対パスではなく、include/requireに渡されるファイル名であることに注意してください。 - docs – livelygreen

5

非常に遅れて応答が、念のために他の誰かが(私はあなたが/のPleskを実行してきたことも推測するつもりだ、この問題を持っているには何も一致している必要があります私はこれを見つけたのです)。

ロードされたphpモジュールのリストにAPCを入れて、マスターphp.iniに apc.enabled 0があることをお勧めします。次に、有効にしたい仮想ホストごとに、有効にするためにphp_admin_value apc.enabled 1を追加します。あなたはサイトのトンを持っている場合は問題になるかもしれませんが、ほんの数人で動作します。 apc.filters以来

0

ワイルドカードパスが apc.filters =と指定する必要があり、正規表現で動作します " - を/ usr/share/PSA-大群/.*" あなたは異なっている場合

2

pnomolosのソリューションが動作しますvhostsですが、1つしかなく、本当にディレクトリ単位でキャッシュを制御したい場合はうまくいきません。

最善の解決策にこのバグレポートポイント:https://bugs.php.net/bug.php?id=57064

APCを有効にして、php.ini0apc.cache_by_defaultを設定するには。 Apacheの設定では、Directoryブロック内のphp_admin_setting apc.cache_by_default 1を使用して、必要な場所で正確にAPCキャッシュを有効にすることができます。

0

使用される:

apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"