PHP 5 telah mencapai akhir dukungan pada 30 Januari 2024. Aplikasi PHP 5 yang sudah ada akan terus berjalan dan menerima traffic. Namun, App Engine mungkin memblokir deployment ulang aplikasi yang menggunakan runtime setelah akhir tanggal dukungannya. Sebaiknya lakukan migrasi ke versi PHP terbaru yang didukung menggunakan panduan di halaman ini.
Halaman ini membahas cara memigrasikan aplikasi PHP 5.5 ke runtime PHP 7/8 di lingkungan standar App Engine.
Masalah kompatibilitas antara PHP 5.5 dan PHP 7/8
Dokumentasi PHP yang resmi berisi informasi tentang migrasi dari berbagai versi PHP:
- Bermigrasi dari PHP 5.5.x ke PHP 5.6.x
- Bermigrasi dari PHP 5.6.x ke PHP 7.0.x
- Bermigrasi dari PHP 7.0.x ke PHP 7.1.x
- Bermigrasi dari PHP 7.1.x ke PHP 7.2.x
- Bermigrasi dari PHP 7.2.x ke PHP 7.3.x
- Bermigrasi dari PHP 7.3.x ke PHP 7.4.x
- Bermigrasi dari PHP 7.4.x ke PHP 8.0.x
- Bermigrasi dari PHP 8.0.x ke PHP 8.1.x
Perbedaan utama antara PHP 5.5 dan PHP 7/8
Berikut adalah ringkasan perbedaan antara runtime PHP 5.5 dan PHP 7/8 di lingkungan standar App Engine:
Perbedaan penggunaan memori
Runtime generasi kedua mengalami dasar penggunaan memori yang lebih tinggi dibandingkan runtime generasi pertama. Hal ini disebabkan oleh beberapa faktor, seperti versi image dasar yang berbeda, dan perbedaan cara penghitungan penggunaan memori oleh kedua generasi.
Runtime generasi kedua menghitung penggunaan memori instance sebagai jumlah penggunaan proses aplikasi, dan jumlah file aplikasi yang di-cache secara dinamis dalam memori. Untuk menghindari aplikasi yang menggunakan banyak memori mengalami penonaktifan instance karena melebihi batas memori, upgrade ke class instance yang lebih besar dengan memori yang lebih besar.
Perbedaan penggunaan CPU
Runtime generasi kedua dapat melihat dasar penggunaan CPU yang lebih tinggi saat cold start instance. Bergantung pada konfigurasi penskalaan aplikasi, hal ini mungkin memiliki efek samping yang tidak diinginkan, seperti jumlah instance yang lebih tinggi daripada yang diperkirakan jika aplikasi dikonfigurasi untuk diskalakan berdasarkan penggunaan CPU. Untuk menghindari masalah ini, tinjau dan uji konfigurasi penskalaan aplikasi untuk memastikan jumlah instance dapat diterima.
Perbedaan header permintaan
Runtime generasi pertama memungkinkan header permintaan dengan garis bawah (misalnya, X-Test-Foo_bar
) diteruskan ke aplikasi. Runtime generasi kedua memperkenalkan Nginx ke dalam arsitektur host. Akibat perubahan
ini, runtime generasi kedua dikonfigurasi untuk otomatis menghapus
header dengan garis bawah (_
). Untuk mencegah masalah aplikasi, hindari penggunaan
garis bawah dalam header permintaan aplikasi.
Memigrasikan file app.yaml
Anda
Anda harus menempatkan pengontrol depan untuk menangani semua perutean dalam aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat Memulai aplikasi.
Runtime PHP 7/8 tidak mengizinkan penyesuaian elemen pengendali script
. Satu-satunya nilai yang valid adalah auto
, karena semua traffic disalurkan menggunakan
perintah entrypoint. Semua pengendali URL non-statis harus menyertakan script: auto
agar deployment berhasil.
Perilaku beberapa elemen dalam file konfigurasi app.yaml
telah
diubah:
Elemen | Ubah jenis | Deskripsi |
---|---|---|
entrypoint | Ditambahkan | Secara opsional, gunakan kolom ini untuk menentukan perintah yang akan dijalankan saat aplikasi Anda dimulai. |
threadsafe | Tidak digunakan lagi | Semua aplikasi dianggap sebagai threadsafe, yang berarti sebuah instance dapat menangani beberapa permintaan secara bersamaan. |
api_version | Tidak digunakan lagi | Sebelumnya diperlukan, tetapi kini tidak diperlukan dalam runtime PHP 7/8. |
application_readable | Tidak digunakan lagi | |
builtins | Tidak digunakan lagi | |
libraries | Tidak digunakan lagi | Dependensi pihak ketiga
arbitrer dapat diinstal menggunakan file metadata
composer.json . |
handlers | Modified |
|
Jika Anda menggunakan salah satu kolom yang tidak digunakan lagi, akan terjadi error saat deployment aplikasi.
Untuk informasi selengkapnya, lihat referensi app.yaml
.
Mengurangi pembatasan runtime
Runtime PHP 7/8 memiliki batasan yang lebih sedikit dibandingkan dengan runtime PHP 5.5.
- Menginstal dependensi pihak ketiga.
- Runtime ini menyertakan sistem file lengkap.
- Buat thread atau proses latar belakang yang berada di luar cakupan permintaan saat instance berjalan.
- Gunakan Library Klien Google Cloud untuk PHP untuk mengintegrasikan aplikasi dengan layanan Google Cloud lainnya. Untuk mengetahui informasi selengkapnya, lihat halaman Menginstal Library Klien Google Cloud.
Untuk informasi selengkapnya, lihat Dokumentasi lingkungan runtime PHP 7/8.
Bermigrasi dari SDK PHP App Engine
Untuk mengurangi upaya dan kompleksitas migrasi runtime, lingkungan standar App Engine memungkinkan Anda mengakses banyak layanan dan API paket lama di runtime PHP 7/8, seperti Memcache. Aplikasi PHP 7/8 Anda dapat memanggil API layanan paket melalui App Engine SDK untuk PHP 7/8, dan mengakses sebagian besar fungsi yang sama seperti pada runtime PHP 5. Tidak semua layanan lama yang tersedia untuk PHP 5 memiliki layanan yang sesuai di PHP 7/8. Untuk mengetahui daftar lengkap API layanan paket lama untuk PHP 7/8, lihat dokumentasi referensi API layanan paket lama.
Anda juga memiliki opsi untuk menggunakan produk Google Cloud yang menawarkan fungsi serupa dengan layanan paket lama. Produk Google Cloud ini menyediakan library klien Google Cloud CLI yang idiomatis. Untuk layanan paket lama yang tidak tersedia sebagai produk terpisah di Google Cloud, seperti penelusuran, Anda dapat menggunakan penyedia pihak ketiga atau solusi lainnya. Untuk mempelajari lebih lanjut cara bermigrasi ke layanan yang tidak dipaketkan, lihat Bermigrasi dari layanan paket.
Menjalankan aplikasi secara lokal
Untuk menguji aplikasi dan menjalankannya secara lokal:
- Instal versi PHP secara lokal yang sesuai dengan salah satu runtime PHP 7/8 yang tersedia di lingkungan standar App Engine.
- Instal server web dan gunakan untuk menyajikan aplikasi Anda secara lokal.
Misalnya, jalankan server HTTP dengan menjalankan perintah berikut:
php -S localhost:8080
Kemudian, lihat aplikasi Anda di browser web di http://localhost:8080.