PHP opcache Nedir? Sunucuda PHP Kodlarının Çalışmasını Nasıl Hızlandırır?
Web Geliştirme

PHP opcache Nedir? Sunucuda PHP Kodlarının Çalışmasını Nasıl Hızlandırır?

PHP opcache Nedir, nasıl çalışır, PHP 8, Laravel, Nextcloud, JIT, kurulum, ayarlar, disable ve reset işlemleriyle öğrenin.

Cenk ŞEKERCİ

Cenk ŞEKERCİ

Operasyon Yöneticisi

11 Ekim 2026
5 dk okuma

PHP opcache Nedir sorusu, özellikle WordPress, Laravel, Nextcloud veya özel PHP uygulamalarında performans arayanların sık karşılaştığı bir konudur. PHP dosyaları her istekte yeniden derlenmek zorunda kalmadığında sunucu daha az yorulur, sayfalar daha hızlı yanıt verir ve trafik artışlarında sistem daha dengeli çalışır.

İçindekiler

PHP opcache Nedir

PHP OPcache, PHP kodlarının derlenmiş bytecode hâlini bellekte saklayan bir önbellekleme mekanizmasıdır. Normalde PHP, her istekte .php dosyasını okur, ayrıştırır ve çalıştırılabilir bytecode’a çevirir. OPcache bu derleme adımını tekrar ettirmez; hazır bytecode’u RAM’den kullanır.

Bu yapı özellikle framework kullanan projelerde ciddi fark oluşturur. Çünkü Laravel, Symfony, WordPress veya Nextcloud gibi uygulamalar tek bir sayfa isteğinde bile çok sayıda PHP dosyası yükler.

DurumOPcache KapalıOPcache Açık
PHP dosyası okumaHer istekte yapılırİlk istekte yapılır
Bytecode üretimiHer istekte tekrar ederBellekten kullanılır
CPU kullanımıDaha yüksekDaha düşük
Yanıt süresiDaha değişkenDaha stabil
Trafik altında davranışDaha çabuk zorlanırDaha dayanıklı

İpucu: OPcache, HTML cache değildir. Sayfanın çıktısını değil, PHP kodunun derlenmiş hâlini saklar. Bu yüzden Redis, Varnish veya sayfa cache eklentileriyle aynı şey değildir.

Php opcache configuration

PHP opcache configuration, OPcache’in hangi bellek miktarıyla, ne kadar dosya saklayarak ve dosya değişikliklerini nasıl kontrol ederek çalışacağını belirleyen ayarlardır. Bu yapı genellikle php.ini, opcache.ini veya kontrol panelindeki PHP ayarları üzerinden düzenlenir.

Tipik bir başlangıç yapılandırması şu şekilde olabilir:

ini
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
opcache.save_comments=1

Bu değerler her sunucu için aynı sonucu vermez. Küçük bir kurumsal site ile büyük bir Laravel uygulamasının ihtiyaçları farklıdır.

AyarNe İşe YararÖneri
`opcache.enable`OPcache’i açar/kapatırÜretimde `1`
`opcache.memory_consumption`OPcache RAM limitini belirler128-256 MB başlangıç için yeterli
`opcache.max_accelerated_files`Önbelleğe alınacak dosya sayısıBüyük projelerde 10000+
`opcache.validate_timestamps`Dosya değişikliklerini kontrol ederCanlıda senaryoya göre
`opcache.revalidate_freq`Kontrol sıklığı2-60 saniye arası

Php opcache settings

PHP opcache settings, performans ile güncelleme güvenliği arasındaki dengeyi kurar. Yanlış ayarlar kod değişikliklerinin görünmemesine, bellek dolmasına veya beklenen hız artışının alınamamasına neden olabilir.

Canlı ortamda sık kullanılan ayar mantığı şöyledir:

  • Geliştirme ortamında dosya değişiklikleri hemen algılanmalıdır.
  • Canlı ortamda dosya kontrol sıklığı azaltılarak performans artırılabilir.
  • Büyük projelerde dosya limiti düşük bırakılmamalıdır.
  • Composer kullanan uygulamalarda yorum satırları bazı paketler için gerekli olabilir.
Senaryo`validate_timestamps``revalidate_freq`Not
Geliştirme ortamı10Değişiklikler hemen görülür
Standart canlı site12-10Güvenli ve pratik
Kontrollü deploy sistemi0KullanılmazDeploy sonrası reset gerekir
Paylaşımlı hosting12-60Panel kısıtlarına bağlıdır

Uyarı: opcache.validate_timestamps=0 yaparsanız PHP dosyalarındaki değişiklikler otomatik algılanmaz. Her dağıtımdan sonra OPcache reset gerekir.

Php opcache disable

PHP opcache disable işlemi, OPcache’in geçici veya kalıcı olarak kapatılmasıdır. Genellikle hata ayıklama, kod değişikliklerinin görünmemesi, uyumsuz eklenti testi veya geliştirme ortamında anlık değişiklikleri görmek için kullanılır.

Kapatmak için genellikle şu ayar kullanılır:

ini
opcache.enable=0

CLI tarafında ayrıca şu ayar olabilir:

ini
opcache.enable_cli=0

OPcache’i kapatmak kalıcı çözüm gibi düşünülmemelidir. Canlı bir PHP sitesinde kapalı kullanmak, özellikle yüksek trafikte CPU tüketimini artırabilir.

Kapatma NedeniMantıklı mı?Alternatif
Geliştirme yaparken değişiklik görememekEvet`revalidate_freq=0`
Canlı sitede performans testiKısa süreliÖncesi/sonrası ölçüm
Eklenti uyumluluk testiEvetGeçici kapatma
Sürekli kapalı kullanmakGenelde hayırDoğru yapılandırma

Php opcache laravel

Laravel projelerinde OPcache, framework dosyalarının ve Composer ile yüklenen sınıfların tekrar tekrar derlenmesini engelleyerek yanıt sürelerini iyileştirir. Laravel zaten route, config ve view cache gibi araçlara sahiptir; OPcache bunların yerine geçmez, onları tamamlar.

Laravel canlı ortamında şu komutlar OPcache ile birlikte daha verimli sonuç verir:

bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
composer install --no-dev --optimize-autoloader

Deploy sonrasında OPcache reset unutulursa eski sınıflar bellekte kalabilir. Bu nedenle deployment sürecine reset adımı eklemek iyi bir pratiktir.

Laravel için pratik öneriler

  • opcache.memory_consumption değerini projenin büyüklüğüne göre artırın.
  • opcache.max_accelerated_files değerini düşük bırakmayın.
  • Deploy sonrası php artisan optimize:clear ve OPcache reset akışını netleştirin.
  • Queue worker kullanıyorsanız kod değişikliklerinden sonra worker restart yapın.

PHP 8.5 opcache

PHP 8.5 opcache ifadesi, PHP 8.5 sürümüyle OPcache’in kullanımını ve uyumluluğunu ifade eder. PHP’nin güncel sürümlerinde OPcache çekirdek performans bileşenlerinden biri olarak önemini korur; ancak kesin sürüm davranışları için kullanılan PHP dağıtımının resmi notları kontrol edilmelidir.

PHP 8 ailesinde OPcache, modern PHP uygulamalarında standart kabul edilen bir performans katmanıdır. JIT desteği de OPcache üzerinden çalışır; ancak JIT her web uygulamasında gözle görülür hızlanma sağlamaz.

Bilgi kutusu: PHP sürümü yükseltirken yalnızca OPcache’in açık olup olmadığına bakmayın. Eklenti uyumluluğu, framework sürümü, Composer paketleri ve php.ini farkları da kontrol edilmelidir.

PHP opcache install

PHP opcache install işlemi, kullanılan işletim sistemi ve PHP kurulum yöntemine göre değişir. Birçok modern PHP paketinde OPcache ayrı bir modül olarak kurulabilir veya varsayılan olarak hazır gelir.

Ubuntu/Debian tabanlı sistemlerde örnek kurulum:

bash
sudo apt update
sudo apt install php-opcache
sudo systemctl restart apache2

PHP-FPM kullanılıyorsa:

bash
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx

RHEL/AlmaLinux/Rocky Linux tarafında paket adı sürüme göre değişebilir:

bash
sudo dnf install php-opcache
sudo systemctl restart php-fpm
Sunucu YapısıYeniden Başlatılacak Servis
Apache mod_php`apache2` veya `httpd`
Nginx + PHP-FPM`php-fpm` ve gerekirse `nginx`
LiteSpeedLiteSpeed servisi
Kontrol panelli hostingPanelde PHP servis reload

PHP opcache JIT

PHP opcache JIT, PHP 8 ile gelen ve OPcache üzerinde çalışan “Just-in-Time” derleme özelliğidir. JIT, bazı PHP kodlarını çalışma anında makine koduna yaklaştırarak özellikle hesaplama yoğun işlemlerde performans kazancı sağlayabilir.

Web uygulamalarında JIT her zaman büyük fark yaratmaz. Veritabanı sorguları, ağ gecikmesi, dosya I/O ve framework katmanları çoğu zaman darboğazın asıl kaynağıdır.

Kullanım AlanıJIT Etkisi
Matematiksel hesaplamaDaha belirgin
Görüntü/sinyal işlemeFaydalı olabilir
Standart CMS sitesiGenelde sınırlı
Laravel/WordPress web isteğiÇoğu zaman küçük
Veritabanı ağırlıklı uygulamaDarboğaz DB olabilir

JIT için örnek ayarlar:

ini
opcache.jit_buffer_size=64M
opcache.jit=tracing

İpucu: JIT’i açmadan önce normal OPcache, PHP-FPM ayarları, veritabanı indeksleri ve uygulama cache katmanları optimize edilmelidir.

PHP opcache nextcloud

PHP opcache nextcloud kurulumlarında oldukça önemlidir. Nextcloud çok sayıda PHP dosyası, uygulama modülü ve arka plan görevi kullandığı için OPcache kapalıysa yönetim panelinde performans uyarıları görülebilir.

Nextcloud için genellikle şu ayarlar öneri seviyesinde değerlendirilir:

ini
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.save_comments=1
opcache.revalidate_freq=60

Nextcloud’da yalnızca OPcache yeterli değildir. Redis file locking, cron yapılandırması, PHP memory limit ve veritabanı optimizasyonu da kontrol edilmelidir.

Nextcloud’da dikkat edilecekler

  • opcache.save_comments=1 kapatılmamalıdır.
  • CLI işlemleri için opcache.enable_cli=1 faydalı olabilir.
  • Güncelleme sonrası servis yeniden başlatılmalıdır.
  • Yönetim panelindeki performans uyarıları düzenli takip edilmelidir.

PHP enable opcache

PHP enable opcache işlemi, OPcache modülünü aktif hâle getirerek PHP’nin bytecode önbelleği kullanmasını sağlar. Aktif olup olmadığını anlamanın en basit yolu phpinfo() çıktısını kontrol etmektir.

Bir PHP dosyası oluşturup şu kod çalıştırılabilir:

php
<?php phpinfo();

Sayfada “Zend OPcache” bölümü görünüyorsa modül yüklüdür. opcache.enable değeri On ise web tarafında aktiftir.

Komut satırından kontrol için:

bash
php -i | grep opcache
php -m | grep OPcache

Uyarı: Web PHP sürümü ile CLI PHP sürümü farklı olabilir. Panelde PHP 8.3 seçiliyken terminalde PHP 8.1 çalışıyor olabilir.

Enable opcache PHP 8

Enable opcache PHP 8 işlemi için önce OPcache modülünün kurulu olduğundan emin olunmalı, ardından ilgili PHP sürümünün yapılandırmasında etkinleştirilmelidir. PHP 8 ve sonrası projelerde OPcache, canlı ortam performansı için çoğu senaryoda açık olmalıdır.

Örnek PHP 8 yapılandırması:

ini
zend_extension=opcache
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=2

PHP-FPM kullanıyorsanız değişiklikten sonra servis yeniden yüklenmelidir:

bash
sudo systemctl reload php8.2-fpm

Apache kullanıyorsanız:

bash
sudo systemctl restart apache2

Opcache reset

Opcache reset, bellekte tutulan derlenmiş PHP bytecode’un temizlenmesi işlemidir. Kod güncellendiği hâlde eski davranış devam ediyorsa, deployment sonrası değişiklikler görünmüyorsa veya validate_timestamps=0 kullanılıyorsa reset gerekir.

PHP içinden reset:

php
<?php
opcache_reset();

CLI ile bir script çalıştırılabilir; ancak web ve CLI OPcache havuzlarının aynı olmayabileceği unutulmamalıdır.

Laravel gibi projelerde deploy akışına şu mantık eklenebilir:

  1. Yeni kodu sunucuya aktar.
  2. Composer bağımlılıklarını güncelle.
  3. Laravel cache komutlarını çalıştır.
  4. PHP-FPM reload veya OPcache reset uygula.
  5. Queue worker süreçlerini yeniden başlat.
Reset YöntemiNe Zaman KullanılırNot
`opcache_reset()`Uygulama içindenYetkisiz erişime açılmamalı
PHP-FPM reloadDeploy sonrasıPratik ve güvenli
Web panel resetHosting ortamındaPanel desteğine bağlı
Sunucu restartZorunlu olmadıkçaDaha kesintili olabilir

Sıkça Sorulan Sorular

PHP OPcache açık mı nasıl anlaşılır?

PHP OPcache’in açık olup olmadığını anlamak için en pratik yöntem phpinfo() çıktısını kontrol etmektir. Sayfada “Zend OPcache” bölümü görünüyorsa modül yüklüdür; opcache.enable değeri “On” ise web isteklerinde aktiftir. Terminalden php -m | grep OPcache veya php -i | grep opcache komutları da kullanılabilir. Ancak CLI ve web PHP sürümleri farklı olabileceği için iki taraf ayrı ayrı kontrol edilmelidir.

OPcache siteyi ne kadar hızlandırır?

OPcache’in sağlayacağı hız artışı projenin yapısına bağlıdır. Çok sayıda PHP dosyası yükleyen Laravel, WordPress, Symfony veya Nextcloud gibi uygulamalarda etkisi daha belirgin olur. Basit ve az dosyalı bir PHP sitesinde fark daha sınırlı kalabilir. Kazanç çoğunlukla CPU tüketiminin düşmesi, yanıt sürelerinin dengelenmesi ve yüksek trafikte sunucunun daha stabil çalışması şeklinde görülür.

OPcache ile Redis aynı şey mi?

Hayır, OPcache ve Redis farklı katmanlarda çalışır. OPcache PHP kodlarının derlenmiş bytecode hâlini RAM’de saklar. Redis ise veri, oturum, obje cache veya kuyruk gibi amaçlarla kullanılabilen bellek içi veri deposudur. Bir PHP uygulamasında ikisi birlikte kullanılabilir. OPcache kod derleme maliyetini azaltırken Redis veritabanı sorgularını veya sık erişilen uygulama verilerini azaltmaya yardımcı olur.

OPcache kapatılırsa ne olur?

OPcache kapatıldığında PHP dosyaları her istekte yeniden okunur, ayrıştırılır ve bytecode’a dönüştürülür. Bu durum CPU kullanımını artırabilir ve yoğun trafikte yanıt sürelerini uzatabilir. Geliştirme ortamında geçici olarak kapatmak sorun değildir; hatta kod değişikliklerini anında görmek için tercih edilebilir. Canlı ortamda ise genellikle kapatmak yerine doğru ayarlarla kullanmak daha sağlıklı bir yaklaşımdır.

OPcache reset güvenli mi?

OPcache reset genel olarak güvenli bir işlemdir; yalnızca bellekte saklanan derlenmiş PHP kodlarını temizler. Veritabanı, dosyalar veya kullanıcı verileri silinmez. Ancak yoğun trafikli sistemlerde reset sonrası ilk isteklerde PHP dosyaları yeniden derleneceği için kısa süreli CPU artışı olabilir. Reset endpoint’i oluşturulacaksa mutlaka erişim kısıtlanmalı, herkese açık bir URL olarak bırakılmamalıdır.

Laravel’de OPcache gerekli mi?

Laravel’de OPcache çoğu canlı ortam için güçlü biçimde önerilir. Laravel, Composer autoload, servis sağlayıcılar, framework çekirdeği ve uygulama sınıfları nedeniyle çok sayıda PHP dosyası kullanır. OPcache bu dosyaların tekrar tekrar derlenmesini engeller. Yine de tek başına yeterli değildir; config:cache, route:cache, optimize edilmiş autoload ve doğru PHP-FPM ayarlarıyla birlikte düşünülmelidir.

Nextcloud neden OPcache uyarısı verir?

Nextcloud, performans ve kararlılık için OPcache kullanımını kontrol eder. OPcache kapalıysa, bellek düşükse veya önerilen bazı ayarlar eksikse yönetim panelinde uyarı gösterebilir. Nextcloud çok sayıda PHP dosyası ve eklenti kullandığı için bytecode cache olmadan daha fazla kaynak tüketir. Bu uyarı görüldüğünde opcache.memory_consumption, max_accelerated_files, save_comments ve servis yeniden başlatma adımları kontrol edilmelidir.

PHP 8’de JIT açmak şart mı?

PHP 8’de JIT açmak şart değildir. OPcache’in normal bytecode cache özelliği çoğu web uygulaması için asıl faydayı sağlar. JIT daha çok hesaplama yoğun işlemlerde anlamlı olabilir. Standart CMS, e-ticaret veya Laravel uygulamalarında darboğaz genellikle veritabanı, ağ gecikmesi veya uygulama mimarisidir. Bu nedenle JIT açmadan önce ölçüm yapmak ve gerçek kazanımı test etmek gerekir.

OPcache bellek limiti dolarsa ne olur?

OPcache için ayrılan bellek dolarsa yeni PHP dosyaları önbelleğe alınamayabilir veya cache verimliliği düşebilir. Bu durumda beklenen performans artışı azalır. opcache_get_status() ile kullanılan bellek, boşa çıkan alan ve cache hit oranı izlenebilir. Büyük projelerde opcache.memory_consumption ve opcache.max_accelerated_files değerlerinin artırılması gerekebilir. Belleği artırırken sunucunun toplam RAM kapasitesi de dikkate alınmalıdır.

OPcache ayarları değişince ne yapılmalı?

OPcache ayarları değiştirildikten sonra ilgili PHP servisi yeniden başlatılmalı veya yeniden yüklenmelidir. Nginx + PHP-FPM kullanılıyorsa PHP-FPM reload yeterli olabilir; Apache mod_php tarafında Apache restart gerekebilir. Kontrol panelli hostinglerde panelin PHP ayarlarını kaydetmesi ve servisleri yenilemesi beklenir. Değişiklikten sonra phpinfo() veya komut satırı çıktısıyla yeni değerlerin gerçekten aktif olduğu doğrulanmalıdır.

İlgili içerikler

  • PHP-FPM nedir ve performans ayarları nasıl yapılır?
  • Laravel performans optimizasyonu için temel ayarlar
  • Redis cache nedir, PHP projelerinde nasıl kullanılır?
  • WordPress hız optimizasyonunda sunucu tarafı ayarlar
  • PHP 8 performans yenilikleri ve geçiş kontrol listesi

PHP OPcache, doğru yapılandırıldığında PHP uygulamalarında sessiz ama etkili bir performans katmanı sağlar. Eğer sunucunuzda PHP tabanlı bir proje çalışıyorsa, OPcache durumunu kontrol etmek ve ayarları proje yapınıza göre düzenlemek ölçülebilir bir iyileştirme sunabilir. Hosting veya sunucu yönetimi tarafında destek almanız gerekiyorsa, kullandığınız altyapının PHP sürümü, servis yapısı ve uygulama türüne göre teknik değerlendirme yapmanız en doğru adımdır.

Netlen'i Google'da Takip Edin

En güncel rehberlerimize, duyurularımıza ve teknik içeriklerimize Google üzerinden öncelikli ulaşmak için Netlen'i tercih ettiğiniz kaynaklar arasına ekleyin.

GoogleGoogle'da Tercih edilenkaynak olarak ekleyin
PHP opcache NedirPHP opcache settingsPHP opcache install

Bu yazıyı paylaşın

Cenk ŞEKERCİ

Yazar Hakkında

Cenk ŞEKERCİ

Operasyon Yöneticisi

Bulut teknolojileri, ağ altyapıları ve veri merkezi operasyonları üzerine çalışıyorum. Öğrendiğim yeni teknolojileri ve sahada karşılaştığım gerçek deneyimleri anlaşılır şekilde paylaşmayı seviyorum.

Yorumlar

Bu yazı hakkında okuyucu yorumları