OPcache Nedir ve Neden Kullanmalısınız?

OPcache, PHP 5.5 ve üzeri sürümlerde yerleşik olarak gelen bir opcode önbellek eklentisidir. PHP betikleri çalıştırıldığında önce derlenir, ardından opcode (ara kod) üretilir. Bu opcode, her istek için yeniden derlenirse CPU ve I/O kaynakları gereksiz yere harcanır. OPcache, bu opcode’u bellekte tutarak aynı betiğin bir sonraki istekte doğrudan bellekten çalıştırılmasını sağlar. Sonuçta sayfa yanıt süresi %30‑70 arasında azalabilir, sunucu kaynak tüketimi ise belirgin şekilde düşer.
Özellikle VDS sunucu paketleri gibi paylaşımlı olmayan ortamlarda, yüksek trafik alan e‑ticaret siteleri ve API servisleri OPcache’in sunduğu performans kazancından maksimum şekilde yararlanır. Ayrıca OPcache, PHP’nin JIT (Just‑In‑Time) derleyicisiyle birlikte çalıştığında daha da yüksek hız elde edilir.
OPcache’in Çalışma Prensibi ve Temel Kavramlar
OPcache, PHP’nin opcode’larını RAM’de saklar ve aynı betiğin sonraki isteklerinde bu önbelleği kullanır. Önbellek iki ana bileşenden oluşur: shared memory segment ve hash table. Shared memory, opcode’ların fiziksel olarak depolandığı yerdir; hash table ise hangi betiğin hangi opcode’a karşılık geldiğini izler. Bu yapı, aynı anda birden fazla PHP‑FPM işleyicisinin aynı önbelleği paylaşmasını sağlar.
OPcache’in etkinleştirilmesi, opcache.enable=1 ayarıyla başlar. Ancak sadece bu ayar yeterli değildir; opcache.memory_consumption, opcache.max_accelerated_files ve opcache.validate_timestamps gibi parametrelerin doğru yapılandırılması, önbelleğin verimli çalışması için kritiktir. Yanlış ayarlar, bellek taşması ya da gereksiz yeniden derleme gibi sorunlara yol açabilir.
OPcache’i Sunucunuza Kurma ve Temel Ayarlar
OPcache, çoğu Linux dağıtımında paket yöneticileri aracılığıyla kolayca kurulabilir. Örneğin, Ubuntu’da sudo apt-get install php-opcache komutu yeterlidir. Kurulumdan sonra /etc/php/8.2/fpm/php.ini (veya kullandığınız PHP sürümüne göre) dosyasına aşağıdaki temel ayarları ekleyin:
opcache.enable=1– OPcache’i aktif eder.opcache.memory_consumption=256– 256 MB bellek tahsis eder; orta ölçekli siteler için yeterlidir.opcache.max_accelerated_files=10000– 10 000 dosyaya kadar önbellekler.opcache.validate_timestamps=0– Dosya değişikliklerini anlık kontrol etmez; üretim ortamı için önerilir.opcache.revalidate_freq=60– Değişiklik kontrol süresi (saniye).
Bu ayarlar, AMD Ryzen VDS sunucular gibi yüksek çekirdekli ortamlarda bellek ve CPU kullanımını dengeleyerek en iyi performansı sağlar. Ayarları kaydettikten sonra PHP‑FPM servisini sudo systemctl restart php8.2-fpm ile yeniden başlatın.
OPcache Performansını Ölçme ve İzleme

OPcache’in etkinliğini ölçmek için opcache_get_status() fonksiyonunu kullanabilirsiniz. Bu fonksiyon, önbellek kullanım oranı, hit/miss istatistikleri ve bellek dağılımı gibi detaylı bilgiler döndürür. Örneğin, bir admin panelinde aşağıdaki kodla gerçek‑zaman rapor oluşturabilirsiniz:
<?php
$status = opcache_get_status();
echo '<pre>'.print_r($status, true).'</pre>';
?>
Bu çıktıyı monitoring araçlarıyla birleştirerek grafiksel izleme yapabilirsiniz. Hit oranı %90’ın üzerindeyse, OPcache doğru çalışıyor demektir. Düşük hit oranı, opcache.max_accelerated_files değerinin artırılması veya opcache.memory_consumption ayarının yükseltilmesi gerektiğini gösterir.
OPcache Ayarlarını İleri Düzeye Çıkarma
Temel ayarlar çoğu site için yeterli olsa da, yüksek trafikli uygulamalarda aşağıdaki ek parametreler performansı iki katına çıkarabilir:
opcache.interned_strings_buffer=16– Ortak stringleri 16 MB bellek içinde tutar, bellek tüketimini azaltır.opcache.fast_shutdown=1– PHP’nin kapanış sürecini hızlandırır.opcache.enable_cli=1– CLI (komut satırı) scriptlerinde de önbelleği aktif eder; cron job’larda faydalıdır.opcache.optimization_level=0x7FFEBFFF– Tüm optimizasyonları etkinleştirir, ancak bazı özel durumlarda uyumsuzluk yaratabilir; test ortamında kontrol edilmelidir.
Bu ayarları uygulamadan önce staging (test) ortamında performans benchmark’ı yapmanız önerilir. WordPress hosting gibi CMS’lerde, OPcache ile birlikte object-cache.php ve redis entegrasyonu, veri tabanı sorgularını da azaltarak toplam yanıt süresini %70’e kadar düşürebilir.
Gerçek Dünya Senaryosu: E‑Ticaret Sitesinde OPcache Kullanımı
Bir e‑ticaret sitesinin ana sayfası ortalama 1,2 saniye sürede yükleniyordu. OPcache’i etkinleştirip memory_consumption değerini 512 MB’a çıkardığımızda, sayfa yanıt süresi 0,68 saniyeye düştü. Aynı zamanda CPU kullanımında %35 azalma gözlendi. Bu iyileşme, e-ticaret hosting paketimizdeki müşterilere %15 daha düşük barındırma maliyeti sağladı.
Senaryoda, opcache.validate_timestamps=0 ayarı sayesinde dosya değişiklikleri yalnızca dağıtım sırasında manuel olarak opcache_reset() komutuyla temizlendi. Bu yöntem, yoğun trafiği olan kampanya dönemlerinde “cache stampede” (önbellek patlaması) riskini ortadan kaldırdı. Ayrıca, opcache.interned_strings_buffer ayarı sayesinde ürün açıklamaları gibi ortak stringler bellek içinde paylaşıldı, bu da bellek kullanımını %20 oranında azalttı.
OPcache’in Avantaj ve Dezavantajları
| Avantaj | Dezavantaj |
|---|---|
| Sayfa yanıt süresi %30‑70 azalır. | Yanlış yapılandırma bellek taşmasına yol açabilir. |
| CPU ve I/O yükü belirgin şekilde düşer. | Dosya değişiklikleri anında yansıtılmaz; manuel reset gerekir. |
| Paylaşımlı hostingde bile düşük maliyetli performans artışı. | OPcache’in JIT desteği PHP 8.0+ gerektirir. |
| CLI scriptlerinde de fayda sağlar. | Bazı eski uzantılar (ör. Xdebug) ile çakışabilir. |
Avantajları göz önüne alındığında, hemen fiziksel sunucu (dedicated server) ya da Intel i9 VDS sunucular gibi yüksek performanslı ortamlarda OPcache’i etkinleştirmek, yatırım getirisini (ROI) hızla artırır.
Sıkça Sorulan Sorular
OPcache ne kadar bellek tüketir?
Varsayılan değer 128 MB’dır, ancak sitenizin dosya sayısına ve büyüklüğüne göre 256‑512 MB arasında ayarlamak önerilir. opcache.memory_consumption parametresiyle bu değeri artırabilirsiniz.
OPcache’i devre dışı bırakmadan nasıl güncellerim?
Üretim ortamında opcache.validate_timestamps=0 kullanıyorsanız, kod değişikliklerinden sonra php -r "opcache_reset();" komutunu çalıştırarak önbelleği temizleyebilirsiniz. Bu, hizmet kesintisi olmadan yeni kodun devreye alınmasını sağlar.
OPcache ve PHP‑FPM arasında uyumsuzluk olabilir mi?
Evet, özellikle opcache.fast_shutdown ayarı PHP‑FPM ile bazı uzantılarda çakışabilir. Sorun yaşarsanız, bu ayarı 0’a çekip performansı yeniden ölçün. Çoğu durumda, opcache.enable_cli gibi ek ayarlar da kontrol edilmelidir.
OPcache’i Windows sunucularda da kullanabilir miyim?
OPcache, Windows’da da çalışır ancak Linux tabanlı sunucularda olduğu gibi performans artışı sınırlı olabilir. Özellikle paylaşımlı bellek yönetimi Windows’da farklıdır; bu yüzden opcache.memory_consumption değerlerini daha düşük tutmak gerekir.
Sonuç: OPcache’i Hemen Uygulayın ve Performansı Katlayın
OPcache, PHP uygulamalarının performansını artırmak için en basit ve etkili yöntemlerden biridir. Doğru kurulum, uygun bellek tahsisi ve periyodik izleme sayesinde, web sitenizin yanıt süresini %70’e kadar azaltabilir, sunucu maliyetlerini düşürebilir ve kullanıcı deneyimini iyileştirebilirsiniz. İlk adım olarak, kullandığınız web hosting paketleri içinde OPcache’in etkinleştirildiğinden emin olun; eğer kendi VDS ya da dedicated sunucunuz varsa, yukarıdaki adımları izleyerek hemen konfigüre edin. Performans ölçümlerinizde gözlemlediğiniz iyileşmeler, OPcache’in yatırımınıza kattığı değeri net bir şekilde gösterecek.