2009-09-30 17 views
13

Czytałem o APC, że przyspiesza to wiele witryn plików php. Tak więc mam ten konkretny projekt w PHP z wieloma plikami i odkrywam, że require_once i parsowanie tylko definicji klas (bez ich wykonywania) zajmuje najwięcej czasu.Jak działa APC (PHP Cache)?

Zainstalowałem APC na moim serwerze CentOS 5. Przeniosłem apc.php do mojego serwera internetowego i wyświetla

Hits: 1 (50.0%) 
Misses: 1 (50.0%) 

Cached Files 1 (281.1 KBytes) 

I mogę przejść do strony i zmienić podstron i tak dalej, i apc.php nadal pokazuje tylko jeden pamięci podręcznej plik ??

A w phpinfo() pokazuje, że:

APC Pomoc włączony

nie wiem co robić. Czy działa APC (jak np. Phpinfo() sais) czy nie? Tylko jeden plik w pamięci podręcznej nie jest dużo po przejrzeniu niektórych stron w mojej witrynie.

Co więcej, jak diagnozować błędy i upewnić się, że działa APC? Ja przeglądałem

apc.mmap_file_mask /tmp/apc.QnLqNf /tmp/apc.QnLqNf

katalog/tmp, ale nie mam żadnych plików APC tam jak to stwierdzono w phpinfo powinien wystąpić.

Proszę pomóż mi sprawdzić, czy działa APC, a jeśli nie, to może być problem.

+0

Jaki jest Twój config APC? W szczególności sprawdź: apc.include_once_override = 1 Co rozwiązuje problem z APC i standardowym kodem/reuire w php – Neel

+0

Jakiego rodzaju PHP-SAPI i Server używasz? Apache + mod_php, Apache + mod_fcgi/mod_fastcgi lub jakiś Lighttpd + fastcgi? –

+0

Mam ten sam problem. Apache + mod_php i apc.php raportują tylko 1 buforowany plik (podejrzewam, że jest to plik apc.php). Czy było jeszcze jakieś objawienie? –

Odpowiedz

8

APC można stosować na dwa sposoby:

  1. Jako cache rozkazu. Masz włączone wsparcie, więc to działa; i
  2. Jako ogólna pamięć podręczna. Musisz wyraźnie użyć do tego celu API.

(1) to główna korzyść. Zmniejsza to czas wykonywania skryptu poprzez przechowywanie wyników opcode "kompilacji" skryptów.

chodzi o jego pracy, z installation instructions:

Uwaga: W Windows APC potrzebuje ścieżkę temp istnieć i być zapisywalny przez serwer internetowej. Sprawdza zmienne środowiskowe TMP, TEMP, USERPROFILE w , które zamawiają i ostatecznie próbuje katalogu WINDOWS, jeśli żaden z nich nie jest ustawiony .

Nie powinieneś tego potrzebować (ani widzieć żadnej aktywności) na CentOS.

To powiedziawszy, wymagają/include są lepsze niż require_once/include_once/autoload, ale powinno mieć znaczenie tylko, jeśli robisz to z setkami plików.

+5

Ok, rozumiem. Ale czy istnieje sposób sprawdzenia, czy to naprawdę działa? Jak już powiedziałem, APC.php pokazuje tylko jedno uderzenie i tęsknie, a wygląda na to, że to nie działa. –

+2

Po drugie. Czy są jakieś dowody (poza wzrostem prędkości), które mogą powiedzieć, że faktycznie działa? –

+2

Jestem w tym samym dylemacie, apc.php pokazuje tylko jeden plik w pamięci podręcznej, który jest apc.php. Jestem zdezorientowany :( – Kumar

2

Czy twoja witryna to w zasadzie jeden plik PHP, który zawiera lub wymaga innych plików? To może zarejestrować się jako pojedynczy plik.Ponadto, o ile mi wiadomo, warunkowa logika include/require może nie buforować zgodnie z oczekiwaniami, chociaż może to być tylko pogłoska!

+0

Nie mam warunkowe.Mam 4 pliki, które zawierają 3 pliki biblioteki.A chciałbym, aby upewnić się, że działa APC, ponieważ APC.PHP nie określa go. –

1

Czy sprawdziłeś pliki dziennika thr? spójrz na /var/log/apache2/error.log lub jego nazwę pod swoją dystrybucją.

Również starać się 2-3 php pliki punkt thebrowser na nich, a następnie sprawdzić, ile php pliki są buforowane przez cache APC ..

nie wiesz o APC, ale ja polecam eAccelerator (http://eaccelerator.net/). Testowałem to jakiś czas temu i naprawdę zrobiłem różnicę.

1

W 3.1.5dev oddziału APC a new option was introduced pozwala wyłączyć pamięć podręczną kodu operacji. Wygląda na domyślnie wyłączony.

warto dodać to do pliku konfiguracyjnego APC:

apc.enable_opcode_cache=1