
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İ
Operasyon Yöneticisi
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 configuration
- Php opcache settings
- Php opcache disable
- Php opcache laravel
- PHP 8.5 opcache
- PHP opcache install
- PHP opcache JIT
- PHP opcache nextcloud
- PHP enable opcache
- Enable opcache PHP 8
- Opcache reset
- Sıkça Sorulan Sorular
- İlgili içerikler
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.
| Durum | OPcache Kapalı | OPcache Açık |
|---|---|---|
| PHP dosyası okuma | Her istekte yapılır | İlk istekte yapılır |
| Bytecode üretimi | Her istekte tekrar eder | Bellekten kullanılır |
| CPU kullanımı | Daha yüksek | Daha düşük |
| Yanıt süresi | Daha değişken | Daha stabil |
| Trafik altında davranış | Daha çabuk zorlanır | Daha 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:
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.
| Ayar | Ne İşe Yarar | Öneri |
|---|---|---|
| `opcache.enable` | OPcache’i açar/kapatır | Üretimde `1` |
| `opcache.memory_consumption` | OPcache RAM limitini belirler | 128-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 eder | Canlı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ı | 1 | 0 | Değişiklikler hemen görülür |
| Standart canlı site | 1 | 2-10 | Güvenli ve pratik |
| Kontrollü deploy sistemi | 0 | Kullanılmaz | Deploy sonrası reset gerekir |
| Paylaşımlı hosting | 1 | 2-60 | Panel kısıtlarına bağlıdır |
Uyarı:
opcache.validate_timestamps=0yaparsanı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:
opcache.enable=0
CLI tarafında ayrıca şu ayar olabilir:
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 Nedeni | Mantıklı mı? | Alternatif |
|---|---|---|
| Geliştirme yaparken değişiklik görememek | Evet | `revalidate_freq=0` |
| Canlı sitede performans testi | Kısa süreli | Öncesi/sonrası ölçüm |
| Eklenti uyumluluk testi | Evet | Geçici kapatma |
| Sürekli kapalı kullanmak | Genelde hayır | Doğ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:
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_consumptiondeğerini projenin büyüklüğüne göre artırın.opcache.max_accelerated_filesdeğerini düşük bırakmayın.- Deploy sonrası
php artisan optimize:clearve 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.inifarkları 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:
sudo apt update
sudo apt install php-opcache
sudo systemctl restart apache2
PHP-FPM kullanılıyorsa:
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:
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` |
| LiteSpeed | LiteSpeed servisi |
| Kontrol panelli hosting | Panelde 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 hesaplama | Daha belirgin |
| Görüntü/sinyal işleme | Faydalı olabilir |
| Standart CMS sitesi | Genelde sınırlı |
| Laravel/WordPress web isteği | Çoğu zaman küçük |
| Veritabanı ağırlıklı uygulama | Darboğaz DB olabilir |
JIT için örnek ayarlar:
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:
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=1kapatılmamalıdır.- CLI işlemleri için
opcache.enable_cli=1faydalı 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 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:
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ı:
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:
sudo systemctl reload php8.2-fpm
Apache kullanıyorsanız:
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
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:
- Yeni kodu sunucuya aktar.
- Composer bağımlılıklarını güncelle.
- Laravel cache komutlarını çalıştır.
- PHP-FPM reload veya OPcache reset uygula.
- Queue worker süreçlerini yeniden başlat.
| Reset Yöntemi | Ne Zaman Kullanılır | Not |
|---|---|---|
| `opcache_reset()` | Uygulama içinden | Yetkisiz erişime açılmamalı |
| PHP-FPM reload | Deploy sonrası | Pratik ve güvenli |
| Web panel reset | Hosting ortamında | Panel desteğine bağlı |
| Sunucu restart | Zorunlu olmadıkça | Daha 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.
Bu yazıyı paylaşın

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ı


