2012-07-28 16 views
6

I have had this problem before on WAMP Server and PHP 5.3, a teraz stojąc przed nim na Linuksie z PHP 5.4.APC nie przyśpieszając PHP 5.4

Zasadniczo włączenie lub wyłączenie APC nie ma wpływu na wydajność, pomimo tego, co mówią statystyki w apc.php.

Oto skrypt testu próbka, która zawiera więcej niż 30 plików Doktryna PHP i czasy to:

$t = microtime(true); 
include 'Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php'; 
printf('%.3f s', microtime(true)-$t); 
  • Wynik na Windows (Zend Server CE, PHP 5.4): 0.001 s
  • Wynik na Linuksie (PHP 5.4 & APC 3.1.11): 0.106 s

Uwaga: nawet jeśli nie jest wyświetlany w powyższym skrypcie, faktycznie używam pełnej ścieżki do pliku i nie polegam na include_path.

Wynik mam na Linuksie jest taka sama, czy apc.enabled jest 0 lub 1, więc wygląda na to buforowania opcode jest po prostu nie działa.

Jednak apc.php mówi:

apc.php

opakowań (z remi repository, CentOS 6.3):

konfigurację
php-5.4.5-1.el6.remi.x86_64 
php-pecl-apc-3.1.11-1.el6.remi.1.x86_64 

APC:

apc.enabled=1 
apc.shm_segments=1 
apc.shm_size=64M 
apc.num_files_hint=1024 
apc.user_entries_hint=4096 
apc.ttl=7200 
apc.use_request_time=1 
apc.user_ttl=7200 
apc.gc_ttl=3600 
apc.cache_by_default=1 
apc.file_update_protection=2 
apc.enable_cli=1 
apc.max_file_size=1M 
apc.stat=1 
apc.stat_ctime=0 
apc.canonicalize=0 
apc.write_lock=1 

Ostatnią rzeczą, tak, PHP robi raportu APC jako włączona:

var_dump(extension_loaded('apc')); // (bool) true 
+0

Mam ten sam problem! Chciałbym, jeśli ktoś mógłby pomóc. –

+2

Dobre pytanie PHP na temat przepełnienia stosu? WSZYSTKIE UPVOTES! – cmbuckley

Odpowiedz

3

Zapomniałem wspomnieć ważną część problemu: serwer sieciowy jest uruchomiony na maszynie wirtualnej systemu Linux w systemie Windows 7 i odczytuje pliki z folderu udostępnionego na hoście.

Zauważyłem, że to, co spowalnia działanie APC, wymaga od stat plików w tym udostępnionym folderze.

Kopiowanie plików na maszynę wirtualną rozwiązuje problem.

Jestem jednak zaskoczony, że apc.stat=0 nie rozwiązuje problemu sam, oczekiwałbym tego tylko raz na stat i bezwarunkowo przeczytałem wszystko z pamięci podręcznej w pamięci.

+1

Może to wyjaśnić zachowanie apc.stat = 0 (http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat): w przypadku plików włączonych/wymaganych ta opcja również obowiązuje, ale pamiętaj, że dla ścieżki względnej (każda ścieżka, która nie zaczyna się z/na systemie Unix), APC musi sprawdzić, aby jednoznacznie zidentyfikować plik. Jeśli używasz bezwzględnej ścieżki, to APC może pominąć stat i użyć tej bezwzględnej ścieżki jako unikalnego identyfikatora pliku. –

+0

Rzeczywiście, chociaż jestem pewien, że moje ścieżki są teraz absolutne, nie mogę być pewny, że zawsze były w przeszłości ... To pytanie staje się nieco stare, musiałem zrobić trochę świeżości testowanie! – Benjamin

Powiązane problemy