OPcache Nedir? PHP Sitenizi Hızlandıran Önbellek

OPcache Nedir? PHP Sitenizi Hızlandıran Önbellek

Kısaca

OPcache, PHP’nin her istekte kod dosyalarını yeniden derlemesini önleyen, derlenmiş kodu (opcode) bellekte tutan bir hızlandırıcıdır. Böylece aynı sayfa ikinci kez istendiğinde PHP, dosyayı yeniden okuyup derlemek yerine hazır kodu doğrudan çalıştırır. Sonuç: daha düşük CPU kullanımı, daha kısa yanıt süresi ve aynı donanımdan daha fazla ziyaretçiye hizmet.

  • OPcache PHP’nin çekirdeğiyle birlikte gelir; ekstra kurulum gerektirmez, yalnızca etkinleştirilir.
  • Kod önbelleğidir; sayfa (HTML) önbelleği değildir — ikisi birlikte çalışır.
  • Doğru ayarlanmış OPcache, PHP yükünü çoğu sitede %30–%70 azaltabilir.

Bir WordPress sayfası açtığınızda perde arkasında onlarca PHP dosyası çalışır. Sunucu bu dosyaların her birini okur, insan tarafından yazılmış kodu makinenin anlayacağı ara koda (opcode) derler ve ancak ondan sonra çalıştırır. Sorun şu: bu derleme işlemi her istekte yeniden yapılırsa, sunucu sürekli aynı işi tekrar tekrar yapar. OPcache tam olarak bu israfı ortadan kaldırır. Bu yazıda OPcache’in ne olduğunu, PHP’yi neden bu kadar hızlandırdığını, hangi ayarların önemli olduğunu ve sayfa önbelleğinden farkını sade bir dille anlatıyoruz.

OPcache nedir?

OPcache (Opcode Cache), PHP için resmi ve dahili bir opcode önbelleğidir. PHP 5.5’ten bu yana PHP’nin bir parçası olarak gelir ve bugün neredeyse tüm modern hosting ortamlarında bulunur. Görevi tek cümleyle şudur: PHP kodunun derlenmiş halini paylaşımlı bellekte saklamak ve sonraki isteklerde bu hazır hali tekrar kullanmak.

Bir benzetmeyle açıklayalım. Diyelim her müşteri geldiğinde yemek tarifini baştan okuyup malzemeleri ölçen bir aşçı düşünün. OPcache olmayan PHP tam olarak böyle çalışır: her istekte tarifi (kodu) yeniden okur ve hazırlar. OPcache ise tarifi bir kez okuyup ezberleyen aşçı gibidir; artık doğrudan pişirmeye başlar. Yemek (sonuç) aynıdır ama süreç çok daha hızlıdır.

PHP nasıl çalışır, OPcache neyi hızlandırır?

OPcache’in değerini anlamak için PHP’nin bir isteği nasıl işlediğini bilmek gerekir. Kabaca dört aşama vardır:

Mail hosting 1 ay ücretsiz
  • Okuma: PHP, ilgili .php dosyalarını diskten okur.
  • Ayrıştırma (parse): Kodu dilbilgisi kurallarına göre çözümler.
  • Derleme (compile): Kodu, çalıştırılabilir ara koda (opcode) çevirir.
  • Çalıştırma (execute): Opcode’u işletir ve sonucu üretir.

İlk üç aşama — okuma, ayrıştırma, derleme — kod dosyası değişmediği sürece her seferinde aynı sonucu üretir. OPcache işte bu tekrar eden emeği bir kez yapıp saklar; sonraki isteklerde doğrudan dördüncü aşamaya, yani çalıştırmaya atlar. Diskten okuma ve derleme ortadan kalktığı için hem CPU kullanımı düşer hem de yanıt süresi kısalır. Trafiğin yoğun olduğu anlarda bu fark, sitenin ayakta kalmasıyla çökmesi arasındaki çizgi olabilir.

OPcache açık mı? Nasıl kontrol edilir?

Çoğu paylaşımlı hosting ve yönetilen sunucuda OPcache varsayılan olarak açıktır. Kendi sunucunuzu yönetiyorsanız, durumu bir satırlık PHP ile görebilirsiniz:

<?php
// Basit bir kontrol dosyası (kontrol sonrası silin)
var_dump(opcache_get_status(false));

Sonuçta opcache_enabled değerinin true olması, önbelleğin çalıştığını gösterir. php -i | grep opcache komutu da komut satırından hızlı bir özet verir. WordPress kullanıyorsanız Site Sağlığı (Site Health) ekranı da OPcache durumu hakkında ipucu verebilir.

Önemli OPcache ayarları

OPcache’i sadece açmak çoğu zaman yeterlidir, ancak birkaç ayarı bilmek performansı ve kararlılığı belirgin biçimde iyileştirir:

  • opcache.memory_consumption: Derlenmiş kod için ayrılan bellek (MB). Çok sayıda eklenti/tema kullanan WordPress siteleri için 128–256 MB makul bir aralıktır. Yetersiz kalırsa önbellek sürekli kendini boşaltır.
  • opcache.max_accelerated_files: Önbelleğe alınabilecek dosya sayısı. Büyük WordPress kurulumları binlerce dosya içerir; bu değeri 10000 veya üzerine çekmek gerekir.
  • opcache.validate_timestamps: PHP’nin dosya değişip değişmediğini kontrol edip etmeyeceği. Açıksa güvenlidir; kapalıysa en yüksek hız elde edilir ama her kod güncellemesinde önbelleği elle temizlemek gerekir.
  • opcache.revalidate_freq: Zaman damgası kontrolünün kaç saniyede bir yapılacağı. Üretimde 60 gibi bir değer, gereksiz disk kontrolünü azaltır.

Genel kural: üretim ortamında bol bellek verin, dosya sayısını yüksek tutun ve doğrulama sıklığını makul bir aralığa çekin. Sürekli kod değiştirdiğiniz geliştirme ortamında ise zaman damgası doğrulamasını açık bırakın ki değişiklikleriniz anında görünsün.

OPcache ile sayfa önbelleği aynı şey mi?

Bu, en sık karıştırılan konudur; ikisi bambaşka katmanlarda çalışır ve birbirinin yerine geçmez:

  • OPcache PHP kodunun derlenmiş halini önbelleğe alır. Sayfa yine de her istekte PHP tarafından üretilir, sadece derleme adımı atlanır. Kişiye özel, dinamik içerik için idealdir.
  • Sayfa önbelleği (örneğin LiteSpeed Cache) ise üretilmiş HTML çıktısını saklar. İkinci ziyaretçiye PHP hiç çalışmadan hazır sayfa sunulur. En yüksek hızı verir ama yalnızca herkese aynı görünen sayfalarda güvenlidir.

Doğru kurulumda ikisi birlikte kullanılır: statik sayfalar HTML önbelleğinden yıldırım hızıyla gelir; sepet, hesabım, giriş yapılmış oturum gibi kişiye özel isteklerde ise sayfa önbelleği devreden çıkar ve burada OPcache devreye girerek PHP’yi hızlandırır. Yani biri diğerini tamamlar, dışlamaz.

JIT ve preloading: kısa bir not

PHP 8 ile birlikte OPcache’e iki güçlü özellik daha eklendi. Preloading, sık kullanılan sınıf ve fonksiyonları sunucu açılışında belleğe yükleyerek her isteğin biraz daha hızlı başlamasını sağlar. JIT (Just-In-Time) derleme ise opcode’u bir adım öteye taşıyıp makine koduna çevirir; ağır matematiksel ve hesaplama yoğun işlerde ciddi kazanç sağlar. WordPress gibi tipik veritabanı-ağırlıklı web uygulamalarında JIT’in etkisi daha sınırlıdır, ama modern PHP’nin genel hızından herkes faydalanır.

OPcache’te sık yapılan hatalar

  • Yetersiz bellek vermek: Önbellek dolunca OPcache kendini komple boşaltır (flush); bu da ani CPU sıçramalarına yol açar. Belleği siteye göre ölçekleyin.
  • Güncelleme sonrası önbelleği unutmak: Zaman damgası doğrulaması kapalıysa, kod güncellediğinizde eski sürüm çalışmaya devam eder. Dağıtımın (deploy) son adımı olarak opcache_reset() çağırmak veya PHP’yi yeniden yüklemek gerekir.
  • Her PHP sürümünü aynı sanmak: Sunucuda birden çok PHP sürümü varsa, her sürümün kendi OPcache’i vardır. Sitenizin gerçekte kullandığı sürümün ayarını kontrol edin.
  • OPcache’i sayfa önbelleği sanmak: “OPcache açık ama site hâlâ yavaş” şikâyetinin ardında çoğu zaman bu karışıklık yatar. Dinamik yavaşlık için veritabanı ve sorgu tarafına da bakmak gerekir.

Alastyr’da OPcache

Alastyr paylaşımlı hosting ve sunucu hizmetlerinde OPcache, performans mimarisinin standart bir parçasıdır. CloudLinux PHP Selector sayesinde sitenizin çalıştığı her PHP sürümünde OPcache etkindir ve sağlıklı değerlerle önceden yapılandırılmıştır; bunun için ekstra bir işlem yapmanıza gerek kalmaz. OPcache, LiteSpeed sunucusu ve LiteSpeed Cache sayfa önbelleğiyle katmanlı biçimde birlikte çalışır: statik içerik HTML önbelleğinden anında sunulurken, kişiye özel ve dinamik isteklerde OPcache PHP tarafını hızlandırır. Tüm bu altyapı, Alastyr Veri Merkezi’ndeki modern sunucular üzerinde barındırılır; böylece hız kadar kararlılık da güvence altına alınır.

Sıkça Sorulan Sorular

OPcache’i ayrıca kurmam gerekir mi?

Hayır. OPcache, PHP 5.5 ve sonrasında PHP’nin çekirdeğiyle birlikte gelir. Modern hosting ortamlarında genellikle zaten etkindir; kendi sunucunuzda ise ek kurulum yapmadan sadece etkinleştirmeniz yeterlidir.

OPcache ile site önbelleği (cache) eklentisi aynı şey mi?

Hayır. OPcache PHP kodunun derlenmiş halini önbelleğe alır; site önbelleği eklentisi ise üretilmiş HTML çıktısını saklar. İkisi farklı katmanlarda çalışır ve en iyi sonucu birlikte kullanıldıklarında verir.

OPcache belleğini ne kadar ayarlamalıyım?

Çok sayıda eklenti ve tema kullanan tipik bir WordPress sitesi için 128–256 MB arası genellikle yeterlidir. Önbelleğin sık sık dolup boşaldığını görüyorsanız belleği artırmak gerekir.

Kod güncelledim ama değişiklik görünmüyor, neden?

Büyük olasılıkla OPcache eski derlenmiş kodu sunuyordur. Zaman damgası doğrulaması kapalıysa güncellemeden sonra önbelleği sıfırlamanız (opcache_reset veya PHP’yi yeniden yükleme) gerekir.

OPcache SEO’yu etkiler mi?

Doğrudan bir sıralama sinyali değildir, ancak yanıt süresini kısaltarak sayfa hızını ve Core Web Vitals değerlerini iyileştirir; bu da dolaylı olarak kullanıcı deneyimine ve sıralamaya olumlu yansır.

OPcache’i kapatmam gereken bir durum var mı?

Üretim ortamında neredeyse hiçbir zaman. Yalnızca sürekli kod değiştirdiğiniz geliştirme ortamlarında, değişikliklerin anında yansıması için doğrulamayı açık tutmak veya OPcache’i devre dışı bırakmak tercih edilebilir.

JIT’i açarsam sitem uçar mı?

Her zaman değil. JIT en çok hesaplama yoğun işlerde fayda sağlar. WordPress gibi veritabanı-ağırlıklı uygulamalarda kazanç sınırlıdır; asıl hız, doğru yapılandırılmış OPcache ve sayfa önbelleğinden gelir.

Paylaşımlı hostingde OPcache ayarlarını değiştirebilir miyim?

Bu, hosting sağlayıcısının verdiği yetkilere bağlıdır. Alastyr’da OPcache sağlıklı değerlerle önceden yapılandırılmış olarak gelir; özel ihtiyaçlarınız için destek ekibiyle iletişime geçebilirsiniz.

Alastyr Telekomünikasyon A.Ş. — 2002'den beri İzmir'de, sahip olduğu veri merkezinde hosting, alan adı ve sunucu hizmeti veriyor. RIPE NCC üyesi (AS3188) ve BTK yetkili .tr kayıt kuruluşudur. Yazılar, teknik ve destek ekibimizin müşterilerden en sık aldığı sorulara göre hazırlanır.
İnternet sitesi Alastyr İnternet Sitesi
Yazı oluşturuldu 707

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön