EGPHP'de PHP

İnşa ettiğimiz her şey PHP ile başlar.

Ekibimiz yirmi beş yıldır, PHP 4'ten beri PHP yazıyor ve çalıştırıyor. Sunucular, kontrol paneli ve bakımını yaptığımız siteler hep buradan başlar.

Üzerinde çalışır ve şununla geliştirilir
  • PHP
  • Laravel
  • NGINX
  • LiteSpeed
  • MySQL
  • MariaDB
  • PostgreSQL
  • Redis
  • Composer
Logo katkıları

Yirmi beş yıl, sürüm sürüm

Bu sürümleri bir yerden okumadık. Gerçek siteleri her birinden geçirerek yükselttik; aşağıdaki her satır, canlı bir sunucuda uğraşmak zorunda kaldığımız bir değişiklik.

  1. PHP 4 2000

    Oturumlar ve çıktı tamponlama, dilin içinde

    Zend Engine geldi; oturumlar ve çıktı tamponlama eklenti olmaktan çıkıp dilin bir parçası oldu. İlk dinamik sitelerin bütün bir kuşağı onun üzerine yazıldı.

    • Zend Engine
    • session_start()
    • ob_start()
    Bizim için anlamı

    Ekibimizin başladığı yer: register_globals hâlâ açıkken paylaşımlı sunucularda elle yazılmış siteler.

  2. PHP 5.0 2004

    Gerçek bir nesne modeli

    Zend Engine 2; görünürlük tanımlı sınıfları, arayüzleri ve istisnaları, kopyalanmak yerine tanıtıcı üzerinden aktarılan nesneleri ve MySQLi ile SimpleXML uzantılarını getirdi.

    • private
    • interface
    • try / catch
    • mysqli
    Bizim için anlamı

    Kod, bir ekibin ortak kullandığı sınıflar halinde düzenlenebilir oldu ve veritabanı modern bir sürücüye kavuştu.

  3. PHP 5.3 2009

    Ad alanları ve closure'lar

    Ad alanları, anonim fonksiyonlar ve geç statik bağlama: Composer'ın ve ortak paket ekosisteminin daha sonra üzerine kurulduğu zemin.

    • namespace
    • function () use ()
    • static::
    Bizim için anlamı

    Farklı yazarların kütüphaneleri, adları çakışmadan nihayet aynı projede bir arada yaşayabildi.

  4. PHP 5.4 2012

    Trait'ler, kısa diziler ve bir temizlik Eski kodu bozdu

    Trait'ler, kısa [] dizi sözdizimi ve yerleşik bir geliştirme sunucusu geldi; register_globals, magic quotes ve safe mode ise tamamen kaldırıldı.

    • trait
    • [ ]
    • php -S
    Bizim için anlamı

    register_globals'a dayanan eski siteler çalışmayı bıraktı; onları yükseltmek, önce onları düzeltmek anlamına geliyordu.

  5. PHP 5.5 2013

    OPcache artık PHP'nin içinde

    OPcache doğrudan PHP ile birlikte gelmeye başladı ve derlenmiş betikleri bellekte tuttu; yanında generator'lar ve password_hash() da geldi.

    • opcache
    • yield
    • password_hash()
    Bizim için anlamı

    Derlenmiş kod her istekte yeniden okunmak yerine bellekte tutuldu. Herhangi bir PHP sunucusunda hâlâ ilk kontrol ettiğimiz ayar budur.

  6. PHP 6 hiç yayınlanmadı

    Hiç çıkmayan sürüm

    PHP 6, yerel Unicode dizeler üzerine planlandı ve rafa kaldırıldı. Sonraki sürüme, 6 için yazılmış kitaplar ve planlarla karıştırılmasın diye 7 numarası verildi.

  7. PHP 7.0 2015

    Hız sıçraması Eski kodu bozdu

    Baştan yeniden kurulmuş bir motor; PHP projesi onu 5.6'dan iki kata kadar hızlı ve daha az bellek kullanan bir motor olarak tanımladı. Yanında skaler ve dönüş tipi bildirimleri, ?? ve <=> geldi.

    • int $id
    • : string
    • ??
    • <=>
    Bizim için anlamı

    Eski mysql_* fonksiyonları kaldırıldı; bu, eski bir sitenin bu yükseltmede bozulmasının sık rastlanan nedenlerinden biriydi.

  8. PHP 7.4 2019

    Tipli özellikler ve ön yükleme

    Tipli özellikler, ok fonksiyonları, ??= operatörü, OPcache ön yüklemesi ve FFI.

    • public int $id
    • fn ($x) =>
    • ??=
    Bizim için anlamı

    Son 7.x sürümü ve birçok eski uygulamanın en uzun süre kaldığı sürüm; siteleri ondan hâlâ bu yüzden taşıyoruz.

  9. PHP 8.0 2020

    JIT, öznitelikler ve adlandırılmış argümanlar Eski kodu bozdu

    Bir JIT derleyicisi, öznitelikler, adlandırılmış argümanlar, birleşim tipleri, match, nullsafe ?-> operatörü ve yapıcıda özellik tanımlama.

    • #[Attribute]
    • match
    • ?->
    • JIT
    Bizim için anlamı

    Birçok uyarı hataya dönüştü ve dizelerle sayılar arasındaki karşılaştırmalar değişti; bu yüzden 7.4'te sessizce çalışan kod 8.0'da durabiliyordu.

  10. PHP 8.1 2021

    Enum'lar, readonly ve fiber'lar

    Yerel enum'lar, readonly özellikler, fiber'lar, never dönüş tipi ve birinci sınıf çağrılabilir sözdizimi.

    • enum
    • readonly
    • Fiber
    • never
    Bizim için anlamı

    Fiber'lar, sıradan bir isteğin çalışma biçimini değiştirmeden asenkron PHP kütüphanelerinin önünü açtı.

  11. PHP 8.2 2022

    Readonly sınıflar ve eski kod için bir uyarı

    Readonly sınıflar, DNF tipleri, bağımsız tip olarak true, false ve null ile yeni bir Random uzantısı.

    • readonly class
    • (A&B)|null
    • Random\Randomizer
    Bizim için anlamı

    Dinamik özellikler kullanımdan kaldırılacak olarak işaretlendi; eski eklentiler güncellenene kadar logları bildirimlerle doldurdu.

  12. PHP 8.3 2023

    Tipli sabitler ve #[\Override]

    Tipli sınıf sabitleri, #[\Override] özniteliği, json_validate() ve dinamik sınıf sabiti erişimi.

    • const string
    • #[\Override]
    • json_validate()
    Bizim için anlamı

    Daha sakin bir sürüm; bu da onu zaten 8.2'de olan siteler için kolay bir adım yapıyor.

  13. PHP 8.4 2024

    Özellik kancaları

    Özellik kancaları, asimetrik görünürlük, tembel nesneler, HTML5 uyumlu bir DOM ayrıştırıcı ve fazladan parantez gerektirmeyen new MyClass()->method().

    • get { }
    • public private(set)
    • Dom\HTMLDocument
    Bizim için anlamı

    Eskiden her biri için ayrı bir metot gereken getter ve setter'lar artık özelliğin kendisine ait; böylece bakımı yapılacak kod azalıyor.

  14. PHP 8.5 2025

    Pipe operatörü Güncel

    |> pipe operatörü, yerleşik bir URI uzantısı, clone with, #[\NoDiscard] özniteliği, array_first() ile array_last() ve ölümcül hatalarda backtrace.

    • |>
    • Uri\Rfc3986\Uri
    • clone($o, [ ])
    Bizim için anlamı

    Güncel sürüm serisi; kodları destekliyorsa yeni siteleri bu seriyle başlatıyoruz.

Yıllar, PHP projesinin kendi sürüm geçmişindeki ilk yayın yıllarıdır.

Bir isteği yığın boyunca takip edin

PHP sitesindeki bir sayfa, içeri girerken beş katmandan geçer, dönüşte de aynı beş katmandan yukarı çıkar. Her birinin bakımını biz yaparız ve her birinin kendi sayfası vardır.

  1. Ziyaretçi

    Bir tarayıcı HTTPS üzerinden bir sayfa ister. İsteğin içeri alınıp alınmayacağına sertifika, güvenlik duvarı ve sunucunun önündeki kurallar karar verir.

  2. Web sunucusu

    Bağlantıyı Nginx ya da LiteSpeed karşılar, görselleri ve dosyaları kendisi sunar, arkasındaki havuza yalnızca PHP işini devreder.

  3. PHP çalışma ortamı

    Her site için bir tane olmak üzere PHP-FPM havuzları: her biri kodunun ihtiyaç duyduğu PHP sürümünde, OPcache sıcak ve işçi süreçleri trafiğe göre boyutlandırılmış.

  4. Kodunuz

    İsteği bir çatı ya da hazır bir platform sayfaya dönüştürür: kendi Laravel uygulamanız ya da WordPress, Magento, Moodle ve diğerleri.

  5. Veri

    Kayıtları MySQL ya da MariaDB tutar; Redis ise tekrar tekrar istenenleri bellekte tutar.

Beşinin de altında

Sunucunun kendisi

Aynı ekibin işlettiği kendi sunucularımız ve üstünde kendi kontrol panelimiz.

Kötü bir sabah yaşamadan daha yeni bir PHP'ye geçmek

Her site kendi havuzunu alır; böylece tek bir sunucu birkaç PHP sürümünü yan yana çalıştırabilir ve her site, sunucu hazır olduğunda değil, kendi kodu hazır olduğunda geçiş yapar.

  1. Her sitenin neyle çalıştığını listeleriz

    PHP sürümü, uzantıları ve onu geride tutan eklentiler ya da paketler.

  2. Bir kopya yeni sürümü dener

    Site kopyalanır ve bir sonraki PHP sürümünde çalıştırılır; hata günlüğü satır satır okunur.

  3. Bozulanı düzeltiriz

    Kaldırılmış fonksiyonlar, kullanımdan kaldırılması planlanan çağrılar ve güncellemesi olmayan eklentiler düzeltilir ya da değiştirilir.

  4. Her seferinde bir site

    Her site yeni havuzuna tek başına geçer ve gözden kaçan bir şey olursa hemen geri alınabilir.

php-fpmTek sunucu, birkaç sürüm
SitePHPHavuzDurum
shop.example.com 8.4 fpm-shop canlı
blog.example.com 8.3 fpm-blog canlı
crm.example.com 7.4 → 8.3 fpm-crm kopyada
learn.example.com 8.3 fpm-learn canlı
Örnek bir sunucu

Hangi PHP sürümleri hâlâ düzeltme alıyor

PHP projesi her dalı dört yıl destekler: iki yıl hata ve güvenlik düzeltmeleri, ardından iki yıl yalnızca güvenlik düzeltmeleri. Sonrasında hiçbir düzeltme gelmez. Bu sayfadaki sürümler için takvim aşağıda.

  • Hata ve güvenlik düzeltmeleri
  • Yalnızca güvenlik düzeltmeleri
  • Destek ömrünü doldurmuş
  • Bugün
  1. PHP 7.4 Destek sonu

    Birçok eski uygulamanın en uzun süre kaldığı sürüm.

    Yayımlandı
    2019-11-28
    Destek sonu
    2022-11-28
  2. PHP 8.0 Destek sonu
    Yayımlandı
    2020-11-26
    Destek sonu
    2023-11-26
  3. PHP 8.1 Destek sonu
    Yayımlandı
    2021-11-25
    Destek sonu
    2025-12-31
  4. PHP 8.2 Yalnızca güvenlik düzeltmeleri
    Yayımlandı
    2022-12-08
    Hata düzeltmeleri şu tarihe kadar
    2024-12-31
    Güvenlik düzeltmeleri şu tarihe kadar
    2026-12-31
  5. PHP 8.3 Yalnızca güvenlik düzeltmeleri
    Yayımlandı
    2023-11-23
    Hata düzeltmeleri şu tarihe kadar
    2025-12-31
    Güvenlik düzeltmeleri şu tarihe kadar
    2027-12-31
  6. PHP 8.4 Etkin destek

    Hosting hizmetimizde çalışır; OPcache ve JIT etkindir.

    Yayımlandı
    2024-11-21
    Hata düzeltmeleri şu tarihe kadar
    2026-12-31
    Güvenlik düzeltmeleri şu tarihe kadar
    2028-12-31
  7. PHP 8.5 Etkin destek

    Kodu destekliyorsa yeni siteleri başlattığımız yer.

    Yayımlandı
    2025-11-20
    Hata düzeltmeleri şu tarihe kadar
    2027-12-31
    Güvenlik düzeltmeleri şu tarihe kadar
    2029-12-31

Tarihler PHP projesinin kendisine aittir; desteklenen sürümler ve destek sonu sayfalarından alındı ve 2026-09-29 tarihinde kontrol edildi. php.net/supported-versions.php

PHP yığını, yetenek yetenek

Bu haritadaki her şey sitenin başka bir sayfasında anlatılıyor. Her kart, konuyu ayrıntısıyla açıklayan sayfaya bağlanır.

Çalışma ortamı

PHP'nin kendisinin her site için nasıl çalıştırıldığı.

  • Site başına bir havuz

    Her sitenin kendi PHP-FPM havuzu vardır; sürümü, sınırları ve işçi süreçleri yalnızca o siteye aittir.

    PHP performansı
  • Site başına PHP sürümü

    Her site için EGPNL panelinden seçilir; böylece tek sunucu birkaç sürümü yan yana çalıştırabilir.

    EGPNL kontrol paneli
  • OPcache

    Derlenmiş betikler siteye göre boyutlandırılmış paylaşımlı bellekte tutulur; hiçbir şeyin dışarı atılmadığından emin olmak için isabet oranı okunur.

    PHP performansı
  • JIT

    Sıcak kodu makine koduna çevirir. İşlemciyi yoran işlerde yardımcı olur; veritabanını bekleyen tipik bir sitede pek bir şey değiştirmez.

    PHP performansı
  • Ön yükleme

    Bir framework için çekirdek dosyaları başlangıçta bir kez yüklenir ve hazır tutulur. Yeniden başlatma dağıtımın bir parçasıdır.

    PHP performansı

Araçlar

Komut satırında ve arka planda kullanabilecekleriniz.

  • Composer

    Tam Composer desteği; optimize edilmiş otomatik yükleyici ve sunucuda geliştirme paketi yok.

    Hosting
  • Arka plan kuyruk işçileri

    Kuyruk işçileri Supervisor altında çalışır; böylece yavaş işler, ziyaretçinin beklediği sayfadan uzak kalır.

    Hosting
  • Kabuk erişimi

    PHP uygulamalarında Composer ve diğer komut satırı işleri için SSH erişimi.

    Hosting
  • WP-CLI ve Drush

    WP-CLI, WordPress için önceden yüklüdür; Drupal, Composer ve Drush ile kurulur ve güncellenir.

    PHP platformları

Eklentiler ve önbellekler

PHP'nin yüklediği modüller ve yanındaki bellek önbellekleri.

  • Sizin için yönetilen eklentiler

    Destek talebi açmak yerine panelden, site başına kurulur ve değiştirilir.

    Neden PHP
  • ionCube Loader

    Bir platformun şifrelenmiş kodu çalıştırmak için ihtiyaç duyduğu yerde kurulur; WHMCS gibi.

    PHP platformları
  • APCu

    PHP değerleri için bellekte bir önbellek; Nextcloud gibi platformlarda önbellekleme ve dosya kilitleme için Redis ile birlikte kullanılır.

    PHP platformları
  • Redis

    Önbellek, oturumlar, kuyruklar ve kilitler bellekte tutulur; Redis internetten erişilemez.

    Veritabanları

Veri ve web sunucusu

Kayıtların tutulduğu yer ve ziyaretçiyi yanıtlayan katman.

  • MySQL ve MariaDB

    Hosting'de phpMyAdmin ile yönetilen InnoDB tabloları; yönetilen sunucularda kurulur, ayarlanır ve izlenir.

    Veritabanları
  • PostgreSQL

    Uygulamanın gerektirdiği yerde kurulur ve ayarlanır; örneğin muhasebe, ERP ve raporlar.

    Veritabanları
  • Nginx veya LiteSpeed

    Görselleri ve dosyaları kendisi sunar, yalnızca PHP işini arkasındaki havuza devreder.

    Neden Nginx
  • TLS üzerinden HTTP/2

    Sayfalar TLS ile HTTP/2 üzerinden sunulur; Let's Encrypt sertifikaları otomatik kurulur ve yenilenir.

    Hosting

PHP'nizi bize getirin

Daha yeni bir PHP'ye ihtiyaç duyan eski bir site, kurulacak bir platform ya da hepsini çalıştıracak bir sunucu. Her iş kısa bir görüşmenin ardından fiyatlandırılır.

MickeySaniyeler içinde yanıtlar