PHP 8.3+ Performans Optimizasyonu Rehberi

PHP 8.3+ Performans Optimizasyonu Rehberi

PHP 8.3 ve üzeri sürümlerde performans optimizasyonu. OPcache, JIT, PHP-FPM ayarları.

PHP sürüm güncellemesi, hosting ortamında yapabileceğiniz en düşük maliyetli performans iyileştirmesidir. PHP 7.4'ten 8.3'e geçiş, aynı donanımda WordPress gibi uygulamalarda istek başına işlem süresini belirgin şekilde düşürür. Bu rehberde PHP 8.3 ve 8.4'ün hosting ortamında performansı nasıl etkilediğini, OPcache ve PHP-FPM yapılandırma önerilerini ve güvenli güncelleme adımlarını paylaşıyoruz.

PHP Sürüm Güncellemesi Neden Önemli?

PHP'nin her yeni ana sürümü, Zend Engine optimizasyonları, bellek yönetimi iyileştirmeleri ve JIT (Just-In-Time) derleyici geliştirmeleri içerir. Bunun hosting ortamındaki somut etkileri:

  • Daha düşük TTFB PHP işlem süresi kısaldığında sunucunun ilk yanıt süresi (TTFB) düşer. Bu, Google Core Web Vitals metriklerini doğrudan iyileştirir.
  • Daha az kaynak tüketimi Aynı trafik hacminde daha az CPU ve bellek kullanımı. Paylaşımlı hosting'de kaynak limitlerini daha geç zorlarsınız, VPS'te daha küçük paket yeterli olabilir.
  • Güvenlik yamaları PHP 8.1 Kasım 2025'te, PHP 8.2 Aralık 2026'da güvenlik desteğini kaybedecek. Eski sürümlerde kalmak, bilinen güvenlik açıklarına maruz kalmak demektir.

PHP 8.3: Performansı Etkileyen Yenilikler

PHP 8.3 (Kasım 2023), tip güvenliği ve bellek yönetimi alanında önemli iyileştirmeler getirdi:

Typed Class Constants

Sınıf sabitlerine artık tip tanımı yapılabilir. Bu, OPcache'in sabitleri daha verimli optimize etmesine olanak tanır ve çalışma zamanı tip kontrolü hatalarını derleme aşamasında yakalar:

PHP 8.3 - Typed Class Constants
class CacheConfig {
    const int TTL = 3600;           // Tip güvenli sabit
    const string DRIVER = 'redis';  // Yanlış tip atanırsa TypeError
    const bool ENABLED = true;
}

json_validate() Fonksiyonu

JSON verisi doğrulamak için artık json_decode() çağırıp sonucu kontrol etmenize gerek yok. json_validate() yalnızca sözdizimi kontrolü yapar, belleğe veri yapısı oluşturmaz - büyük JSON payload'larında bellek tasarrufu sağlar:

PHP 8.3 - json_validate()
// Eski yöntem: belleğe decode eder, sonra kontrol
$data = json_decode($input);
if (json_last_error() !== JSON_ERROR_NONE) { /* hata */ }

// PHP 8.3: sadece doğrulama, bellek kullanmaz
if (json_validate($input)) {
    $data = json_decode($input, true);
}

Readonly Sınıf Değişiklikleri ve #[\Override] Attribute

PHP 8.3, readonly sınıfların klonlanması sırasında özelliklerin yeniden başlatılmasına izin verir. #[\Override] attribute'u ise üst sınıf metotlarının doğru override edildiğini derleme zamanında doğrular - bu, büyük kod tabanlarında refactoring hatalarını önler ve dolaylı olarak çalışma zamanı hata kontrolü yükünü azaltır.

PHP 8.4: Property Hooks ve JIT İyileştirmeleri

PHP 8.4 (Kasım 2024), dil seviyesinde önemli yenilikler ve JIT derleyicisinde stabilite iyileştirmeleri getirdi:

Property Hooks: Getter ve setter mantığını doğrudan property tanımında yazabilirsiniz. Bu, ayrı metot çağrısı overhead'ini ortadan kaldırır ve OPcache optimizasyonlarına olanak tanır:

PHP 8.4 - Property Hooks
class Product {
    public string $slug {
        set(string $value) => strtolower(trim($value));
    }

    public float $priceWithTax {
        get => $this->price * 1.20;
    }

    public function __construct(
        public float $price,
    ) {}
}

Asymmetric Visibility: Property'lerin okunma ve yazılma erişim düzeylerini ayrı ayrı tanımlayabilirsiniz (public private(set)). Bu, gereksiz getter metotlarını ortadan kaldırır.

JIT İyileştirmeleri: PHP 8.4'te JIT derleyicisi daha stabil hale getirildi. Özellikle ARM64 (Apple Silicon, AWS Graviton) platformlarında bellek yönetimi sorunları giderildi. Üretim ortamlarında JIT'i etkinleştirmek artık daha güvenlidir.

OPcache Yapılandırması

OPcache, PHP betiklerini derleme aşamasında bytecode'a çevirip bellekte saklar. Her istekte dosya okuma ve derleme işlemini atlar. Hosting ortamında OPcache doğru yapılandırılmamışsa PHP 8.x'in performans avantajlarından tam yararlanamıyorsunuz demektir.

php.ini - Üretim ortamı OPcache ayarları
opcache.enable=1
opcache.memory_consumption=256        ; MB - WordPress için 128-256 yeterli
opcache.interned_strings_buffer=32    ; MB - string deduplication için
opcache.max_accelerated_files=20000   ; WordPress + eklentiler için yeterli
opcache.validate_timestamps=0         ; Üretimde 0 - dosya değişikliği kontrolü kapalı
opcache.revalidate_freq=0             ; validate_timestamps=0 ise etkisiz
opcache.save_comments=1               ; Laravel/Doctrine annotation için gerekli
opcache.enable_file_override=1        ; file_exists() ve is_file() hızlandırma

; JIT ayarları (PHP 8.0+)
opcache.jit=1255                       ; tracing JIT - CPU yoğun işlemler için
opcache.jit_buffer_size=128M          ; JIT derlenmiş kod için bellek

⚠️ Önemli: validate_timestamps=0 ayarı, PHP dosyalarındaki değişikliklerin otomatik algılanmamasına neden olur. Kod güncellemesi sonrası opcache_reset() çağırmanız veya PHP-FPM'i yeniden başlatmanız gerekir. Geliştirme ortamında bu değeri 1 olarak bırakın.

PHP-FPM Havuz Optimizasyonu

PHP-FPM (FastCGI Process Manager), PHP isteklerini işleyen worker process'leri yönetir. Yanlış yapılandırma, ya yetersiz worker nedeniyle kuyruk oluşmasına ya da fazla worker nedeniyle bellek tükenmesine yol açar.

/etc/php/8.3/fpm/pool.d/www.conf
; Process yönetim modu
pm = dynamic

; Maksimum worker sayısı
; Formül: (Toplam RAM - Sistem/DB için ayrılan) / Worker başına bellek
; Örnek: 4 GB RAM, ~50 MB/worker → max_children = 40-50
pm.max_children = 40

; Başlangıçta çalışan worker sayısı
pm.start_servers = 10

; Minimum boşta bekleyen worker
pm.min_spare_servers = 5

; Maksimum boşta bekleyen worker
pm.max_spare_servers = 15

; Bellek sızıntısını önlemek için worker'ı yeniden başlat
pm.max_requests = 500

; Yavaş istek loglama (debug için)
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log

💡 İpucu: Worker başına bellek tüketimini ölçmek için: ps --no-headers -o rss -C php-fpm | awk '{ sum += $1 } END { printf "Ortalama: %.0f MB\n", sum/NR/1024 }' komutunu kullanın. WordPress siteleri genellikle worker başına 30-60 MB tüketir.

Sürüm Karşılaştırma Tablosu

Özellik PHP 8.1 PHP 8.2 PHP 8.3 PHP 8.4
Güvenlik Desteği Sonu Kasım 2025 Aralık 2026 Aralık 2027 Aralık 2028
JIT Derleyici Temel İyileştirilmiş Stabil ARM64 düzeltmeleri
Readonly Property Sınıf Klonlama desteği Asimetrik görünürlük
Öne Çıkan Fibers, Enums Standalone types Typed constants Property hooks
WordPress Uyumu Tam Tam Tam (6.4+) Tam (6.7+)

Güvenli Güncelleme Rehberi

PHP sürüm güncellemesi, uyumsuz eklenti veya kod nedeniyle sorun yaratabilir. Güvenli geçiş için şu adımları izleyin:

terminal - PHP 8.3 güncelleme adımları (Ubuntu)
# 1. Mevcut PHP sürümünü ve eklentileri listele
php -v
php -m

# 2. Ondrej PPA'yı ekle (Ubuntu)
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# 3. PHP 8.3 ve gerekli eklentileri kur
sudo apt install php8.3-fpm php8.3-mysql php8.3-curl \
  php8.3-xml php8.3-mbstring php8.3-zip php8.3-gd \
  php8.3-intl php8.3-opcache php8.3-redis

# 4. Nginx'i yeni PHP-FPM soketine yönlendir
# fastcgi_pass unix:/run/php/php8.3-fpm.sock;

# 5. Test et ve eski sürümü devre dışı bırak
php8.3 -v
sudo systemctl stop php8.2-fpm
sudo systemctl disable php8.2-fpm

⚠️ Güncelleme öncesi kontrol listesi: (1) Tam yedek alın, (2) staging ortamında test edin, (3) WordPress ise PHP Compatibility Checker eklentisini çalıştırın, (4) composer.json'daki require.php sürüm kısıtlamasını kontrol edin, (5) eski PHP-FPM'i hemen silmeyin - sorun çıkarsa geri dönebilmelisiniz.

PHP sürüm yönetimi ve hosting altyapısı hakkında daha fazla bilgi için Hosted Cloud hosting planlarını inceleyebilirsiniz. Hosting seçim kriterleri için 10 Kritik Kriter makalemize göz atın.

Sıkça Sorulan Sorular

PHP 7.4'ten 8.3'e geçiş güvenli mi?

İki ana sürüm atlama olduğu için dikkatli olunmalıdır. PHP 8.0'da kaldırılan fonksiyonlar (mysql_* gibi) ve değişen davranışlar (string-to-number karşılaştırma) uyumsuzluk yaratabilir. Staging ortamında kapsamlı test şarttır.

JIT'i üretimde etkinleştirmeli miyim?

Tipik web uygulamalarında (WordPress, Laravel) JIT'in etkisi sınırlıdır çünkü darboğaz genellikle I/O'dadır. CPU yoğun işlemler (resim işleme, veri analizi) yapıyorsanız JIT fayda sağlar. PHP 8.4+ ile stabilite artmıştır ancak yine de izleme altında etkinleştirin.

Paylaşımlı hosting'de PHP sürümünü değiştirebilir miyim?

Çoğu paylaşımlı hosting sağlayıcısı cPanel veya panel üzerinden PHP sürüm seçimi sunar. Ancak sunulan sürümler sağlayıcıya bağlıdır. PHP 8.3+ desteği yoksa sağlayıcınızı değiştirmeyi veya VPS'e geçmeyi düşünün.

OPcache validate_timestamps=0 ayarı ne zaman kullanılmalı?

Yalnızca üretim ortamında kullanın. Bu ayar, PHP'nin her istekte dosya değişikliği kontrolü yapmasını engeller ve performansı artırır. Kod güncellemesi sonrası PHP-FPM'i yeniden başlatmanız veya OPcache'i temizlemeniz gerekir.

Sonuç

PHP sürüm güncellemesi, hosting ortamında en düşük maliyetli performans iyileştirmesidir. PHP 8.3 ve 8.4'ün getirdiği tip güvenliği, JIT iyileştirmeleri ve dil seviyesi optimizasyonları, doğru OPcache ve PHP-FPM yapılandırmasıyla birleştiğinde somut hız kazanımları sağlar. Güncelleme öncesinde staging ortamında test etmeyi ve tam yedek almayı unutmayın.

PHP 8.4 Destekli Hosting

Hosted Cloud hosting planlarında en güncel PHP sürümlerini kullanabilir, OPcache ve PHP-FPM ayarlarını dilediğiniz gibi yapılandırabilirsiniz.

Hosting Planlarını İncele →
A

Ahmet Yılmaz

Kıdemli Altyapı Mühendisi

10 yılı aşkın bulut altyapısı ve DevOps deneyimiyle Hosted Cloud'un teknik ekibinde yer almaktadır. Kubernetes, Terraform ve yüksek erişilebilirlik mimarileri üzerine uzmanlaşmıştır.

Yorumlar yakında