Bermigrasi dari PHP 5.5 ke runtime PHP terbaru

Halaman ini membahas petunjuk untuk bermigrasi dari runtime PHP generasi pertama ke generasi kedua. Untuk mengupgrade aplikasi generasi kedua agar menggunakan versi PHP terbaru yang didukung, lihat Mengupgrade aplikasi yang sudah ada.

PHP 5 tidak digunakan lagi. Anda tidak akan dapat men-deploy aplikasi PHP 5, meskipun jika organisasi Anda sebelumnya menggunakan kebijakan organisasi untuk mengaktifkan kembali deployment runtime lama. Aplikasi PHP 5 yang ada akan terus berjalan dan menerima traffic. Sebaiknya Anda bermigrasi ke versi PHP terbaru yang didukung.

Dengan bermigrasi ke runtime PHP generasi kedua yang didukung, Anda dapat menggunakan fitur bahasa terbaru dan membangun aplikasi yang lebih portabel dengan kode idiomatis.

Masalah kompatibilitas antara PHP 5.5 dan runtime PHP generasi kedua

Dokumentasi PHP yang resmi berisi informasi tentang migrasi dari berbagai versi PHP:

Perbedaan utama antara PHP 5.5 dan runtime PHP generasi kedua

Berikut adalah ringkasan perbedaan antara runtime PHP 5.5 dan PHP generasi kedua di lingkungan standar App Engine:

Perbedaan penggunaan memori

Runtime generasi kedua memiliki penggunaan memori dasar yang lebih tinggi dibandingkan dengan runtime generasi pertama. Hal ini disebabkan oleh beberapa faktor, seperti versi gambar dasar yang berbeda, dan perbedaan cara kedua generasi menghitung penggunaan memori.

Runtime generasi kedua menghitung penggunaan memori instance sebagai jumlah dari apa yang digunakan proses aplikasi, dan jumlah file aplikasi yang di-cache secara dinamis dalam memori. Untuk menghindari aplikasi intensif memori mengalami penonaktifan instance karena melampaui batas memori, upgrade ke class instance yang lebih besar dengan memori yang lebih banyak.

Perbedaan penggunaan CPU

Runtime generasi kedua dapat melihat baseline 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 dari yang diperkirakan jika aplikasi dikonfigurasi untuk diskalakan berdasarkan pemanfaatan 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. Sebagai akibat dari perubahan ini, runtime generasi kedua dikonfigurasi untuk menghapus header dengan garis bawah (_) secara otomatis. 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 generasi kedua 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:

ElemenUbah jenisDeskripsi
entrypointDitambahkan Secara opsional, gunakan kolom ini untuk menentukan perintah yang akan dijalankan saat aplikasi Anda dimulai.
threadsafeTidak digunakan lagiSemua aplikasi dianggap sebagai threadsafe, yang berarti sebuah instance dapat menangani beberapa permintaan secara bersamaan.
api_versionTidak digunakan lagiSebelumnya diperlukan, tetapi kini tidak diperlukan dalam runtime PHP generasi kedua.
application_readableTidak digunakan lagi
builtinsTidak digunakan lagi
librariesTidak digunakan lagiDependensi pihak ketiga arbitrer dapat diinstal menggunakan file metadata composer.json.
handlersModified
  • Kolom script bersifat opsional dan satu-satunya nilai yang diterima adalah auto. Gunakan framework web (seperti Laravel, Symfony, Slim, atau opsi serupa) dengan perutean dalam aplikasi untuk menjalankan skrip saat permintaan mencapai rute tertentu
  • Kolom login tidak didukung. Gunakan Identity and Access Management (IAM) untuk pengelolaan pengguna.

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 generasi kedua memiliki batasan yang lebih sedikit dibandingkan dengan runtime PHP 5.5.

Untuk mengetahui informasi selengkapnya, lihat lingkungan runtime PHP.

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 generasi kedua, seperti Memcache. Aplikasi PHP generasi kedua Anda dapat memanggil API layanan paket melalui App Engine SDK, dan mengakses sebagian besar kemampuan yang sama seperti pada runtime PHP 5. Tidak semua layanan paket lama yang tersedia untuk PHP 5 memiliki layanan yang sesuai di runtime PHP generasi kedua. Untuk mengetahui daftar lengkap API layanan paket lama yang tersedia untuk runtime PHP generasi kedua, lihat dokumentasi referensi API layanan paket lama.

Anda juga memiliki opsi untuk menggunakan Google Cloud produk yang menawarkan kemampuan 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:

  1. Instal versi PHP secara lokal yang sesuai dengan runtime PHP generasi kedua yang tersedia di lingkungan standar App Engine.

  2. 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.