Tiesto

WFN Üye
Konular
635
Mesajlar
635
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Antalya
Web Sitesi
Var
Alanı
Domain Uzmanı
1/1
Konu sahibi
İlk olarak PHP’nin web sunucusu tarafından kullanılan php.ini dosyasını bulun; opcache.enable=1 ayarını ekleyip kaydedin ve PHP’yi çalıştıran servisi yeniden başlatın. Ardından OPcache’nin gerçekten web isteklerinde etkin olduğunu phpinfo() veya opcache_get_status() ile doğrulayın. Komut satırında php -v çıktısının OPcache’yi göstermesi tek başına yeterli değildir; CLI ve web sunucusu farklı PHP yapılandırmaları kullanabilir.

OPcache’yi etkinleştirme​


OPcache, PHP dosyalarının her istekte yeniden derlenmesi yerine oluşturulan opcode’ları bellekte tutar. PHP’nin güncel kurulumlarında çoğu zaman yerleşik gelir; ancak eklenti yüklenmemişse önce PHP paketinizin OPcache bileşenini kurmanız veya barındırma sağlayıcınızdan etkinleştirilmesini istemeniz gerekir.

Önce hangi PHP yapılandırmasının kullanıldığını belirleyin. SSH erişiminiz varsa aşağıdaki komut, komut satırındaki PHP’nin php.ini konumunu gösterir:

Bash:
php --ini

Bu dosya, web sunucusunun kullandığı dosyayla aynı olmak zorunda değildir. Web tarafını kontrol etmek için geçici olarak, sitenizin herkese açık dizinine aşağıdaki dosyayı opcache-kontrol.php adıyla yükleyin:

PHP:
<?php
phpinfo();

Dosyayı tarayıcıda açtığınızda Loaded Configuration File satırı web isteklerinde kullanılan php.ini yolunu gösterir. Aynı sayfada Zend OPcache bölümünü arayın. Dosyayı işlem tamamlanınca silin; phpinfo() sunucunun PHP yapılandırması hakkında gereğinden fazla bilgi gösterebilir.

Kullandığınız PHP sürümüne ait php.ini dosyasını yönetici yetkisiyle açın ve mevcut ayarları tekrar etmeyecek şekilde en azından şunları ekleyin veya değerlerini düzeltin:

INI:
opcache.enable=1
opcache.validate_timestamps=1
opcache.revalidate_freq=2

opcache.enable=1 web istekleri için OPcache’yi açar. opcache.validate_timestamps=1 dosyaların değişip değişmediğinin kontrol edilmesini sağlar; bu ayar geliştirme sırasında eski kodun sunulmasını önlemeye yardımcı olur. opcache.revalidate_freq=2 dosya değişikliklerinin en fazla yaklaşık iki saniyelik kontrol aralığıyla fark edilmesini sağlar. Üretimde bu değeri artırmak mümkün olsa da validate_timestamps kapatılırsa dosya değişikliklerinin etkili olması için OPcache sıfırlanmalı veya PHP servisi yeniden başlatılmalıdır.

Linux sunucuda PHP-FPM kullanıyorsanız yapılandırmayı kaydettikten sonra PHP-FPM’yi yeniden başlatın. Servis adı dağıtıma ve PHP sürümüne göre değişebileceği için örneğin php8.3-fpm adını kendi sisteminizdeki sürümle değiştirin:

Bash:
sudo systemctl restart php8.3-fpm

Apache’nin PHP modülüyle çalışıyorsanız Apache’yi, Nginx ve PHP-FPM birlikte kullanılıyorsa genellikle PHP-FPM’yi yeniden başlatmanız gerekir. Paylaşımlı hostingde bu yetkiniz yoksa php.ini, .user.ini veya kontrol panelindeki PHP ayarları kullanılabilir; hangi yöntemin geçerli olduğu sunucunun yapılandırmasına bağlıdır.

Windows’ta PHP dağıtımının kullandığı php.ini dosyasına şu ayarları ekleyin ve PHP’yi sağlayan web sunucusunu yeniden başlatın:

INI:
opcache.enable=On
opcache.enable_cli=On

opcache.enable_cli=On yalnızca CLI işlemlerini, yani php script.php gibi komut satırı çalıştırmalarını etkiler. Web sitesi için asıl belirleyici ayar opcache.enable değeridir. OPcache eklentisi hiç görünmüyorsa Windows PHP paketinde php_opcache.dll dosyasının bulunduğunu ve ilgili PHP yapılandırmasında eklentinin yüklendiğini kontrol edin; dosya yoksa aynı sürüm ve mimariye uygun PHP paketini kurmanız gerekir.

Etkinleştirildiğini doğrulama​


Geçici kontrol dosyasını daha sınırlı bilgi gösterecek şekilde de hazırlayabilirsiniz:

PHP:
<?php
header('Content-Type: text/plain; charset=utf-8');

if (!function_exists('opcache_get_status')) {
    exit("OPcache eklentisi yüklü değil veya bu SAPI için kullanılamıyor.\n");
}

$status = opcache_get_status(false);

if ($status === false) {
    exit("OPcache yüklü ancak etkin değil.\n");
}

echo "OPcache etkin.\n";
echo "Önbellekteki script sayısı: " . ($status['opcache_statistics']['num_cached_scripts'] ?? 0) . "\n";

Bu dosyayı web üzerinden açtığınızda “OPcache etkin.” mesajını görmeniz, web SAPI’si için OPcache’nin çalıştığını gösterir. Önbellekteki script sayısının başlangıçta sıfır olması tek başına hata değildir; uygulamanızın PHP dosyaları çalıştırıldıkça bu sayı artabilir. “Eklenti yüklü değil” sonucu alırsanız ilgili PHP SAPI’sinde OPcache yüklenmemiştir. “Yüklü ancak etkin değil” sonucu ise opcache.enable değerinin kapalı olduğunu, yanlış php.ini dosyasının düzenlendiğini veya servis yeniden başlatılmadığını gösterir.

Aşağıdaki ayrım, kontrol sonucunu yorumlamayı kolaylaştırır:
Kontrol sonucuAnlamıSonraki işlem
Zend OPcache görünüyor ve OPcache etkinWeb istekleri için OPcache çalışıyorKontrol dosyasını silin; performans ayarlarını uygulamanıza göre düzenleyin
CLI’de etkin, web’de kapalıCLI ve web farklı PHP yapılandırması kullanıyorWeb tarafındaki Loaded Configuration File yolunu düzenleyip PHP servisini yeniden başlatın
OPcache eklentisi görünmüyorEklenti yüklenmemiş veya farklı PHP sürümüne ait yapılandırma kullanılıyorPHP sürümüne uygun OPcache paketini yükleyin ya da hosting desteğine sürüm ve phpinfo() çıktısıyla başvurun
Kod değişiklikleri hemen görünmüyorEski opcode’lar önbellekte kalmış olabilirÖnbelleği sıfırlayın veya PHP-FPM/web sunucusunu yeniden başlatın; geliştirmede timestamp doğrulamasını açık tutun
Kontrolden sonra hem phpinfo() dosyasını hem de durum kontrol dosyasını sunucudan kaldırın. Geliştirme ve üretim ortamlarında aynı ayarları körü körüne kullanmayın: opcache.validate_timestamps=0 üretimde ek kontrol maliyetini azaltabilir, ancak dosya değişikliklerinin otomatik fark edilmesini engeller. Bu ayarı kullanıyorsanız her dağıtımdan sonra PHP-FPM’yi veya ilgili PHP çalışanlarını yeniden başlatacak bir işlem ekleyin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic