Kitek's Page Blog programisty / webdeveloper'a

APC

APC – Alternative PHP Cache

APC jest buforem kompilatora języka PHP który umożliwia pominięcie fazy analizy kodu podczas wykonywania skryptu. Dzięki takiemu zabiegowi możemy znacząco skrócić czas generowania stron naszego serwisu. Najlepsze efekty można zauważyć dla skryptów zawierających dużo kodu lub/i include’ów/require’ów zewnętrznych plików. Rysunek poniżej przedstawia standardową procedurę wykonania skryptu PHP:

Standardowe uruchomienie skryptu PHP

Standardowe uruchomienie skryptu PHP

Poniżej przedstawiam schemat uruchomienia skryptu PHP z wykorzystaniem buforowania:

Uruchomienie skryptu z wykorzystaniem APC

Uruchomienie skryptu z wykorzystaniem APC

Instalacja Alternative PHP Cache w systemie Gentoo Linux

APC dostępne jest w bibliotekach PECL (PEAR Extension Code Library) – o tym jak sprawdzić czy mamy poprawnie zainstalowanego PEAR’a możemy dowiedzieć się tutaj. Gdy w naszym systemie znajduje się PEAR instalujemy Alternative PHP Cache za pomocą poniższego polecenia:

pecl install apc

Po zakończeniu procesu instalacji włączamy obsługę APC w pliku /etc/php/apache2-php5/php.ini dodając linię:

extension=apc.so

w sekcji “Dynamic Extensions”.

W zasadzie tylko tyle wystarczy by cieszyć się i podziwiać szybkość jakie uzyskaliśmy instalując APC na naszym serwerze. Wynik zastosowania Alternative PHP Cache na moim blogu to zejście z czasu ok. 0.315 do 0.111 sekundy – co daje według mnie przyzwoity wzrost wydajności.

Zabawa na tym się nie kończy…

Dzięki powyższym wskazówkom zainstalowaliśmy i uruchomiliśmy APC na naszym serwerze – jednak to nie wszystko. Alternative PHP Cache zostało uruchomione na domyślnych ustawieniach które możemy zmodyfikować według naszego uznania dodają nową sekcję w pliku /etc/php/apache2-php5/php.ini:

[apc]
apc.enabled = 1
apc.shm_segments = 1
apc.optimization = 0
apc.max_file_size=1
apc.num_files_hint = 1000
apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.enable_cli=0

Opis niektórych z powyższych ustawień:

  • enabled – wartość 0 wyłącza, 1 włącza APC na naszym serwerze (domyślnie: 1)
  • shm_segments – liczba segmentów pamięci współdzielonej (domyślnie: 1)
  • shm_size – pamięć wyrażona w MB jaką chcemy przydzielić dla APC na każdy z segmentów (domyślnie: 30 MB)
  • optimization – poziom optymalizacji. Wartość: 0 wyłączone, wyższe wartości optymalizacja bardziej agresywna. Opcja eksperymentalna (domyślnie: 0)
  • max_file_size – określamy o jakim maksymalnym rozmiarze chcemy keszować pliki (domyślnie: 1MB)
  • mmap_files_mask – ścieżka gdzie mają trafiać tymczasowe pliki APC
  • enable_cli – opcja włączana głównie w czasie przeprowadzania testów lub diagnostyki (domyślnie: 0)

Spis wszystkich dostępnych ustawień znajdziemy tutaj.

Statystyki APC

Dostęp do statystyk naszego APC uzyskamy przenosząc plik /tmp/pear/download/APC-3.0.16/apc.php (lub ściągając go z PECL download) do katalogu web na naszym serwerze. Dobrą praktyką jest zmiana loginu i hasła:

<?php
defaults('ADMIN_USERNAME','apc');
defaults('ADMIN_PASSWORD','password');

Po wpisaniu adresu do pliku apc.php w przeglądarce naszym oczom powinna pojawić się podobna strona do tej:

APC statystyki

Linki: