PHP di EGPHP

Semua yang kami bangun berawal dari PHP.

Tim kami telah menulis dan menjalankan PHP selama dua puluh lima tahun, sejak PHP 4. Server, panel kontrol, dan situs yang kami rawat semuanya berawal dari sini.

Dua puluh lima tahun, rilis demi rilis

Kami tidak sekadar membaca tentang versi-versi ini. Kami meng-upgrade situs sungguhan melewati setiap versinya, dan setiap baris di bawah ini adalah perubahan yang harus kami tangani di server yang sedang berjalan.

  1. PHP 4 2000

    Sesi dan output buffering, bawaan bahasa

    Zend Engine hadir, dan sesi serta output buffering menjadi bagian dari bahasa itu sendiri, bukan lagi tambahan. Satu generasi situs dinamis awal ditulis di atasnya.

    • Zend Engine
    • session_start()
    • ob_start()
    Artinya bagi kami

    Titik awal tim kami: situs yang ditulis tangan di server bersama, dengan register_globals masih aktif.

  2. PHP 5.0 2004

    Model objek yang sesungguhnya

    Zend Engine 2 menghadirkan kelas dengan visibilitas, interface, dan exception, objek yang diteruskan lewat handle alih-alih disalin, serta ekstensi MySQLi dan SimpleXML.

    • private
    • interface
    • try / catch
    • mysqli
    Artinya bagi kami

    Kode dapat disusun dalam kelas-kelas yang dipakai bersama oleh satu tim, dan basis data mendapat driver modern.

  3. PHP 5.3 2009

    Namespace dan closure

    Namespace, fungsi anonim, dan late static binding: fondasi yang kelak menjadi pijakan Composer dan ekosistem paket bersama.

    • namespace
    • function () use ()
    • static::
    Artinya bagi kami

    Pustaka dari penulis yang berbeda akhirnya bisa hidup dalam satu proyek tanpa nama-namanya saling bertabrakan.

  4. PHP 5.4 2012

    Trait, array singkat, dan bersih-bersih Merusak kode lama

    Trait, sintaks array singkat [], dan server pengembangan bawaan, sementara register_globals, magic quotes, dan safe mode dihapus untuk selamanya.

    • trait
    • [ ]
    • php -S
    Artinya bagi kami

    Situs lama yang bergantung pada register_globals berhenti berfungsi, dan meng-upgrade-nya berarti memperbaikinya lebih dulu.

  5. PHP 5.5 2013

    OPcache langsung tersedia

    OPcache disertakan bersama PHP dan menyimpan skrip yang telah dikompilasi di memori, bersama generator dan password_hash().

    • opcache
    • yield
    • password_hash()
    Artinya bagi kami

    Kode hasil kompilasi disimpan di memori, tidak dibaca ulang pada setiap permintaan. Sampai sekarang, inilah pengaturan pertama yang kami periksa di setiap server PHP.

  6. PHP 6 tak pernah dirilis

    Versi yang tak pernah dirilis

    PHP 6 direncanakan dengan string Unicode bawaan, lalu ditinggalkan. Rilis berikutnya diberi nomor 7 agar tidak tertukar dengan buku dan rencana yang sudah ditulis untuk versi 6.

  7. PHP 7.0 2015

    Lompatan kecepatan Merusak kode lama

    Mesin yang dibangun ulang, yang menurut proyek PHP hingga dua kali lebih cepat daripada 5.6 dengan memori lebih sedikit, ditambah deklarasi tipe skalar dan tipe kembalian, ?? dan <=>.

    • int $id
    • : string
    • ??
    • <=>
    Artinya bagi kami

    Fungsi mysql_* yang lama dihapus, salah satu penyebab tersering situs lama rusak pada upgrade ini.

  8. PHP 7.4 2019

    Properti bertipe dan preloading

    Properti bertipe, arrow function, operator ??=, preloading OPcache, dan FFI.

    • public int $id
    • fn ($x) =>
    • ??=
    Artinya bagi kami

    Rilis 7.x terakhir, dan versi yang paling lama dipertahankan oleh banyak aplikasi lama, itulah sebabnya kami masih memindahkan situs dari versi ini.

  9. PHP 8.0 2020

    JIT, atribut, dan argumen bernama Merusak kode lama

    Kompiler JIT, atribut, argumen bernama, union type, match, operator nullsafe ?->, dan constructor property promotion.

    • #[Attribute]
    • match
    • ?->
    • JIT
    Artinya bagi kami

    Banyak peringatan berubah menjadi error, dan perbandingan antara string dan angka berubah, sehingga kode yang berjalan tenang di 7.4 bisa berhenti di 8.0.

  10. PHP 8.1 2021

    Enum, readonly, dan fiber

    Enum bawaan, properti readonly, fiber, tipe kembalian never, dan sintaks first-class callable.

    • enum
    • readonly
    • Fiber
    • never
    Artinya bagi kami

    Fiber membuka jalan bagi pustaka PHP asinkron tanpa mengubah cara sebuah permintaan biasa dijalankan.

  11. PHP 8.2 2022

    Kelas readonly, dan peringatan untuk kode lama

    Kelas readonly, tipe DNF, true, false, dan null sebagai tipe mandiri, serta ekstensi Random yang baru.

    • readonly class
    • (A&B)|null
    • Random\Randomizer
    Artinya bagi kami

    Properti dinamis dinyatakan usang, dan plugin lama memenuhi log dengan pemberitahuan sampai diperbarui.

  12. PHP 8.3 2023

    Konstanta bertipe dan #[\Override]

    Konstanta kelas bertipe, atribut #[\Override], json_validate(), dan pengambilan konstanta kelas secara dinamis.

    • const string
    • #[\Override]
    • json_validate()
    Artinya bagi kami

    Rilis yang lebih tenang, sehingga menjadi langkah mudah bagi situs yang sudah berada di 8.2.

  13. PHP 8.4 2024

    Property hooks

    Property hooks, visibilitas asimetris, lazy objects, parser DOM yang memahami HTML5, dan new MyClass()->method() tanpa tanda kurung tambahan.

    • get { }
    • public private(set)
    • Dom\HTMLDocument
    Artinya bagi kami

    Getter dan setter yang dulu masing-masing memerlukan satu metode kini menjadi milik properti itu sendiri, sehingga kode yang perlu dirawat lebih sedikit.

  14. PHP 8.5 2025

    Operator pipe Terkini

    Operator pipe |>, ekstensi URI bawaan, clone with, atribut #[\NoDiscard], array_first() dan array_last(), serta backtrace pada fatal error.

    • |>
    • Uri\Rfc3986\Uri
    • clone($o, [ ])
    Artinya bagi kami

    Lini rilis terkini, dan versi yang kami gunakan untuk memulai situs baru bila kodenya mendukung.

Tahun yang tercantum adalah tahun rilis pertama setiap versi menurut riwayat rilis resmi proyek PHP.

Ikuti satu permintaan menembus tumpukan

Sebuah halaman di situs PHP melewati lima lapisan saat masuk, lalu naik kembali melalui lima lapisan yang sama saat keluar. Kami merawat semuanya, dan masing-masing punya halamannya sendiri.

  1. Pengunjung

    Browser meminta sebuah halaman melalui HTTPS. Sertifikat, firewall, dan aturan di depan server menentukan apakah permintaan itu boleh masuk atau tidak.

  2. Web server

    Nginx atau LiteSpeed menerima koneksi, menyajikan sendiri gambar dan berkas, dan hanya meneruskan pekerjaan PHP ke pool di belakangnya.

  3. Runtime PHP

    Pool PHP-FPM, satu per situs, masing-masing dengan versi PHP yang dibutuhkan kodenya, OPcache yang sudah hangat, dan worker yang disesuaikan dengan lalu lintasnya.

  4. Kode Anda

    Framework atau platform siap pakai mengubah permintaan menjadi halaman: aplikasi Laravel Anda sendiri, atau WordPress, Magento, Moodle, dan lainnya.

  5. Data

    MySQL atau MariaDB menyimpan catatan, dan Redis menyimpan di memori apa yang diminta berulang kali.

Di bawah kelimanya

Server itu sendiri

Server kami sendiri, dikelola oleh tim yang sama, dengan panel kontrol kami sendiri di atasnya.

Pindah ke PHP yang lebih baru tanpa pagi yang kacau

Setiap situs mendapat pool-nya sendiri, sehingga satu server dapat menjalankan beberapa versi PHP berdampingan, dan setiap situs pindah saat kodenya siap, bukan saat servernya siap.

  1. Kami mendata apa yang dijalankan setiap situs

    Versi PHP-nya, ekstensinya, serta plugin atau paket yang menahannya.

  2. Sebuah salinan mencoba versi baru

    Situs disalin dan dijalankan pada versi PHP berikutnya, lalu log error-nya dibaca baris demi baris.

  3. Kami memperbaiki yang rusak

    Fungsi yang dihapus, pemanggilan yang usang, dan plugin tanpa pembaruan diperbaiki atau diganti.

  4. Satu situs setiap kali

    Setiap situs beralih ke pool barunya sendiri-sendiri, dan dapat segera dikembalikan jika ada yang terlewat.

php-fpmSatu server, beberapa versi
SitusPHPPoolStatus
shop.example.com 8.4 fpm-shop aktif
blog.example.com 8.3 fpm-blog aktif
crm.example.com 7.4 → 8.3 fpm-crm di salinan
learn.example.com 8.3 fpm-learn aktif
Contoh sebuah server

Bawa PHP Anda kepada kami

Situs lama yang membutuhkan PHP lebih baru, platform yang perlu dipasang, atau server untuk menjalankan semuanya. Setiap pekerjaan diberi penawaran harga setelah percakapan singkat.