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.
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.
-
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 Enginesession_start()ob_start()
Bizim için anlamıEkibimizin başladığı yer: register_globals hâlâ açıkken paylaşımlı sunucularda elle yazılmış siteler.
-
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.
privateinterfacetry / catchmysqli
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.
-
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.
namespacefunction () use ()static::
Bizim için anlamıFarklı yazarların kütüphaneleri, adları çakışmadan nihayet aynı projede bir arada yaşayabildi.
-
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.
-
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.
opcacheyieldpassword_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.
-
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.
-
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.
-
PHP 7.4 2019
Tipli özellikler ve ön yükleme
Tipli özellikler, ok fonksiyonları, ??= operatörü, OPcache ön yüklemesi ve FFI.
public int $idfn ($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.
-
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.
-
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.
enumreadonlyFibernever
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ı.
-
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)|nullRandom\Randomizer
Bizim için anlamıDinamik özellikler kullanımdan kaldırılacak olarak işaretlendi; eski eklentiler güncellenene kadar logları bildirimlerle doldurdu.
-
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.
-
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.
-
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\Uriclone($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.
-
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.
-
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.
-
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ış.
-
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.
-
Veri
Kayıtları MySQL ya da MariaDB tutar; Redis ise tekrar tekrar istenenleri bellekte tutar.
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.
Her sitenin neyle çalıştığını listeleriz
PHP sürümü, uzantıları ve onu geride tutan eklentiler ya da paketler.
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.
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.
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.
| Site | PHP | Havuz | Durum |
|---|---|---|---|
| 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ı |

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.