PHP
OPcache yapılandırması
OPcache ile PHP bytecode'unu bellekte tutarak performans artışı sağlamayı öğrenirsin.
OPcache ne işe yarar?
OPcache, PHP betiklerinin derlenmiş bytecode'unu bellekte tutarak her istekte yeniden derleme yükünü ortadan kaldırır. İlk istekte PHP dosyanızı bytecode'a çevirir ve paylaşımlı belleğe yazar.
Sonraki isteklerde kaynaktan değil doğrudan bellekten okur. Bu, özellikle büyük framework'lerde gözle görülür bir hız artışı sağlar.
OPcache varsayılan olarak CLI dışında açıktır; php.ini içinde opcache.enable ile denetlenir. Bellek ve hit istatistiklerini opcache_get_status ile okursunuz, önbelleği temizlemek için opcache_reset çağırırsınız.
opcache_get_status ve opcache_reset
opcache_get_status tek parametre alır: true verirseniz tam listeyi (her betiğin durumu), false verirseniz yalnızca özet istatistik döner. OPcache kapalıysa false döner, bu yüzden çağırmadan önce function_exists ile fonksiyonun varlığını denetlemek güvenlidir.
opcache_reset tüm önbelleği temizler ve true döner; genellikle yeni kod devreye alındığında ya da test sırasında çağrılır. Üretimde sık çağırmak ilk isteklerde yeniden derleme maliyeti yaratır.
Uygulama OPcache extension yüklülüğünü raporla
function_exists ile 'opcache_get_status' ara, sonucu $loaded'a ata. Aynı şekilde 'opcache_reset' ara, $can_reset'e ata. echo ile her ikisini de 1 veya 0 olarak yazdır.
Örnek çözümü göster
function_exists('opcache_get_status') true/false döner. Sonucu $loaded'a ata, sonra ternary ile 1/0 yazdır. Aynısını opcache_reset için yap.
Örnek çözüm:
<?php
$loaded = function_exists('opcache_get_status');
$can_reset = function_exists('opcache_reset');
echo ($loaded ? "1\n" : "0\n");
echo ($can_reset ? "1\n" : "0\n");
Kendini test et
-
opcache_get_status ne döner?
- Yalnızca bellek kullanımını bayt olarak
- OPcache istatistiklerini içeren dizi veya false
- Yeni bir OPcache oturumu açar
- PHP dosyalarını yeniden derler
Cevabı göster
OPcache istatistiklerini içeren dizi veya false — Doğru. İstatistikleri bir dizi olarak döner; OPcache kapalıysa false verir.
-
opcache_get_status çağrısını tamamla
$status = ____(false);
if ($status === false) {
echo "OPcache disabled\n";
}
Cevabı göster
$status = opcache_get_status(false);
if ($status === false) {
echo "OPcache disabled\n";
}
-
OPcache kavramlarını eşleştir
- opcache_get_status
- İstatistikleri okur
- opcache_reset
- Önbelleği temizler
- opcache.enable
- php.ini anahtarı
- bytecode
- Derlenmiş betik
Sıradaki ders: Profil (profiling) araçları