2009-10-26 9 views
7

Jak używać parametru apc.filters w buforowaniu kodów opcode APC, aby nie buforować określonych ścieżek? Na przykład, chcę buforowanie być aktywny na wszystko pod ścieżką:apc.filters według ścieżki?

"/ var/www/vhostów"

i uwzględniają wszystkie ścieżki jak

"/ usr/share/PSA-horda /"

próbowałem za pomocą

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

i

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

Ale żaden nie działał tak, jak się spodziewałem.

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

Jeżeli filtr będzie coś bardziej jak "+/var/www/vhostów/*" (uwaga zamiennika)? Obawiam się, że nie jest to możliwe ze względu na sposób filtrów działa:

Należy pamiętać, że nazwa pliku używany do dopasowywania jest jeden przeszedł do obejmują/wymagają, a nie bezwzględną ścieżkę.

Wszelkie pomysły lub przykładowe konfiguracje?

Odpowiedz

6

Filtr powinien być rozdzieloną przecinkami listą rozszerzonych wyrażeń regularnych POSIX. Wierzę, że to, co masz w drugiej próbie, pasuje tylko do dokładnej ścieżki/usr/share/psa-horde /, a nie/usr/share/psa-hordy/czegoś lub /usr/share/psa-horde/anotherfile.php

Poniższy powinien dopasować coś w podkatalogu

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

Hmm, dobre połączenie, ale myślę, że to działa tylko w nazwie pliku, jeśli pełna ścieżka została wykorzystana w rachunku wymagać: „Należy pamiętać, że nazwa pliku służy do dopasowywania jest jeden przeszedł włączyć/wymagać, a nie bezwzględną ścieżkę. " – typeoneerror

+0

np. wypróbowałem "-/var/www/vhosts/myhostname.com/svn/public/openx /.*", a pliki w tym katalogu nadal są buforowane. – typeoneerror

+0

"Należy zauważyć, że nazwa pliku użytego do dopasowywania jest tą, która została przekazana do włączenia/wymagania, a nie do ścieżki bezwzględnej." - z dokumentów – livelygreen

5

bardzo późnej reakcji, ale na wszelki wypadek, gdyby ktoś inny posiadające ten problem (mam zamiar Chyba można/zostały prowadzenie Plesk pole, dlatego natknąłem się na to).

Najlepiej jest mieć APC na liście załadowanych modułów php, ale mieć apc.enabled 0 w głównym php.ini. Następnie dla każdego hosta, dla którego chcesz go włączyć, dodaj php_admin_value apc.enabled 1, aby włączyć dla każdego. Może to być problem, jeśli masz mnóstwo witryn, ale działa tylko dla kilku.

0

Od apc.filters współpracuje z wyrażeń regularnych, wieloznaczny ścieżka powinna być określona jako apc.filters = "-/usr/share/PSA-horda /.*" rozwiązanie

2

pnomolos' działa, jeśli masz inny vhosts, ale nie zadziała, jeśli masz tylko jedną i chcesz kontrolować pamięć podręczną w naprawdę konkretnym katalogu.

punkty to zgłoszenie błędu na najlepsze rozwiązanie: https://bugs.php.net/bug.php?id=57064

Włącz APC i ustawić apc.cache_by_default do 0 w php.ini. W konfiguracji Apache można następnie użyć php_admin_setting apc.cache_by_default 1 wewnątrz bloku Directory, aby umożliwić buforowanie APC dokładnie tam, gdzie jest to potrzebne.

0

używany:

apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/" 
Powiązane problemy