Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

PHP OPcache — konfiguracja i optymalizacja

Opublikowano: 8 kwietnia 2026 · Kategoria: PHP / Serwer

OPcache to wbudowany mechanizm cache'owania kodu PHP w postaci skompilowanej (opcode). Eliminuje potrzebę parsowania plików PHP przy każdym żądaniu — WordPress z OPcache działa 2-5x szybciej niż bez cache'u. Ten artykuł opisuje konfigurację OPcache na VPS i hostingu współdzielonym.

Podstawowa konfiguracja php.ini

[opcache]
; Włącz OPcache
opcache.enable=1
opcache.enable_cli=0

; Pamięć na skompilowany kod (MB)
opcache.memory_consumption=128

; Pamięć na interned strings (MB)
opcache.interned_strings_buffer=16

; Maks. liczba plików w cache
opcache.max_accelerated_files=10000

; Jak często sprawdzać zmiany plików (sekundy, 0 = nigdy)
; Na produkcji: 0 (ręczne invalidation po deploy)
; Na dev: 2 (automatyczne odświeżanie)
opcache.revalidate_freq=0

; Zapisz skompilowany kod na dysk (trwałość po restarcie PHP)
opcache.file_cache=/tmp/php-opcache

; Wyłącz timestampy na produkcji (szybsze, wymaga ręcznego clear)
opcache.validate_timestamps=0

Optymalne ustawienia dla WordPress

; WordPress + WooCommerce (typowy serwer)
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.revalidate_freq=0
opcache.validate_timestamps=0
opcache.save_comments=1    ; wymagane przez DocBlock annotations
opcache.fast_shutdown=1

; Wielostronicowy serwer (wiele WP instalacji)
opcache.memory_consumption=512
opcache.max_accelerated_files=50000

Weryfikacja i monitoring

<?php
// opcache-status.php — usuń po użyciu!
$status = opcache_get_status();

echo "Aktywny: " . ($status['opcache_enabled'] ? 'TAK' : 'NIE') . "\n";
echo "Hit rate: " . round($status['opcache_statistics']['opcache_hit_rate'], 2) . "%\n";
echo "Pliki w cache: " . $status['opcache_statistics']['num_cached_scripts'] . "\n";
echo "Pamięć użyta: " . round($status['memory_usage']['used_memory'] / 1024 / 1024, 2) . " MB\n";
echo "Pamięć wolna: " . round($status['memory_usage']['free_memory'] / 1024 / 1024, 2) . " MB\n";
echo "Hits: " . $status['opcache_statistics']['hits'] . "\n";
echo "Misses: " . $status['opcache_statistics']['misses'] . "\n";

Docelowe wartości: hit_rate > 90%, pamięć użyta < 80% przydzielonej. Jeśli hit_rate spada — zwiększ max_accelerated_files.

Czyszczenie OPcache po deploymencie

# Metoda 1: WP-CLI (jeśli CLI i FPM w tym samym procesie)
wp eval "opcache_reset();" --allow-root

# Metoda 2: HTTP endpoint (bezpieczniejszy na serwerach z FPM)
# Utwórz: /var/www/html/clear-opcache.php
<?php
if ($_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
    opcache_reset();
    echo "OPcache wyczyszczony";
}
# Wywołaj:
curl http://localhost/clear-opcache.php
# Usuń plik po użyciu!

# Metoda 3: Przez deploy script
php -r "opcache_reset();"  # działa tylko gdy PHP CLI i FPM to ten sam proces

# Metoda 4: Restart PHP-FPM (pewna, ale reload serwisu)
systemctl reload php8.3-fpm

OPcache na hostingu współdzielonym

# Ustawienia przez .user.ini (umieść w katalogu domeny)
# Plik: /home/user/domains/twojadomena.pl/public_html/.user.ini
opcache.revalidate_freq=60
opcache.memory_consumption=128

# Lub przez .htaccess (Apache + mod_php)
# php_value opcache.revalidate_freq 60

# Weryfikacja (utwórz phpinfo.php):
<?php phpinfo();
# Szukaj: "opcache" w sekcji Loaded Modules
# Usuń plik po weryfikacji!

Porównanie konfiguracji: dev vs produkcja

Dyrektywa Dev Produkcja Uwagi
validate_timestamps 1 0 Na prod: ręczne invalidation
revalidate_freq 2 0 Sek. między sprawdzeniami
memory_consumption 64 128-256 MB pamięci RAM
max_accelerated_files 4000 10000-50000 Maks. plików w cache
enable_cli 0 0 CLI i FPM to osobne procesy

Najczęstsze pytania

Jak sprawdzić czy OPcache jest aktywny? +
Utwórz plik phpinfo.php z zawartością <?php phpinfo(); i otwórz go w przeglądarce — szukaj sekcji 'opcache'. Alternatywnie: wp eval "echo function_exists('opcache_get_status') ? 'aktywny' : 'nieaktywny';" (WP-CLI). Na hostingu współdzielonym OPcache często jest włączony domyślnie.
Ile pamięci RAM przydzielić dla OPcache? +
Dla WordPress: min. 64 MB (opcache.memory_consumption=64). Dla większych instalacji z wieloma wtyczkami: 128-256 MB. Dla serwera z wieloma serwisami: 512 MB+. Sprawdź utilizację: opcache_get_status()['memory_usage']. Jeśli opcache_hit_rate < 90% lub used_memory > 90% — zwiększ memory_consumption.
Jak wyczyścić cache OPcache po deploymencie? +
PHP: opcache_reset() lub opcache_invalidate($file, true). WP-CLI: wp eval "opcache_reset();" — jeśli CLI i FPM działają osobno, trzeba HTTP endpoint. Najprostsza metoda: plik clear-opcache.php z opcache_reset() + usunięcie po wywołaniu. Na hostingu współdzielonym: restart PHP w panelu (DirectAdmin/cPanel) lub poczekaj na opcache.revalidate_freq.
Czy OPcache działa na hostingu współdzielonym? +
Tak, większość nowoczesnych hostingów współdzielonych ma OPcache włączony domyślnie — to standardowa optymalizacja. Nie masz dostępu do php.ini na poziomie serwera, ale możesz ustawić dyrektywy przez .htaccess (php_value opcache.revalidate_freq 0) lub plik .user.ini w katalogu domeny. Sprawdź w panelu hostingu lub w phpinfo() czy jest aktywny.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.