Tutorial ini menunjukkan cara menangani sesi di App Engine.
Banyak aplikasi memerlukan penanganan sesi untuk autentikasi dan preferensi pengguna. PHP dilengkapi dengan implementasi berbasis memori untuk menjalankan fungsi ini. Namun, penerapan ini tidak cocok untuk aplikasi yang dapat ditayangkan dari beberapa instance, karena sesi yang direkam dalam satu instance mungkin berbeda dengan instance lainnya.
Tujuan
- Tulis aplikasi.
- Jalankan aplikasi secara lokal.
- Deploy aplikasi di App Engine.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init - Konfigurasi gcloud CLI untuk menggunakan project Google Cloud baru Anda:
Ganti# Configure gcloud for your project gcloud config set project PROJECT_ID
PROJECT_IDdengan ID project Google Cloud yang Anda buat atau pilih sebelumnya.
Menyiapkan project
Di jendela terminal, mulai di direktori pilihan Anda dan buat direktori baru bernama
sessions. Semua kode untuk tutorial ini ada di dalam direktorisessions.Ubah ke direktori
sessions:cd sessionsInstal dependensinya:
composer require google/cloud-firestore
Di akhir tutorial ini, struktur file akhir akan mirip dengan berikut ini:
sessions
├── app.yaml
└── composer.json
├── index.php
Menulis aplikasi
Di jendela terminal, buat file bernama
index.phpdengan konten berikut:
Aplikasi ini menampilkan sapaan dalam berbagai bahasa untuk setiap pengguna. Pengguna yang kembali selalu disambut dalam bahasa yang sama.
Sebelum aplikasi Anda dapat menyimpan preferensi untuk pengguna, Anda memerlukan cara untuk menyimpan informasi tentang pengguna saat ini dalam sesi. Aplikasi contoh ini menggunakan Firestore untuk menyimpan data sesi.
Anda dapat menggunakan Firestore session handler untuk menggunakan Firestore bagi sesi PHP.
Diagram berikut menggambarkan cara Firestore menangani sesi untuk aplikasi App Engine.
Setelah Anda menetapkan session_set_save_handler, setiap permintaan memiliki variabel global $_SESSION
yang dapat Anda gunakan untuk mengakses sesi. Data sesi disimpan di Firestore.
Berjalan secara lokal
Mulai server web PHP bawaan:
php -S localhost:8080Lihat aplikasi di browser web Anda:
Cloud Shell
Di toolbar Cloud Shell, klik Web preview
dan pilih Preview on port 8080.Mesin lokal
Di browser Anda, buka
http://localhost:8080Anda akan melihat salah satu dari lima ucapan: “Hello World”, “Hallo Welt”, "Hola mundo”, “Salut le Monde”, atau “Ciao Mondo”. Bahasa akan berubah jika Anda membuka halaman di browser lain atau dalam mode samaran. Anda dapat melihat dan mengedit data sesi di konsolGoogle Cloud .

Untuk menghentikan server HTTP, di jendela terminal, tekan
Control+C.
Men-deploy dan menjalankan di App Engine
Anda dapat menggunakan lingkungan standar App Engine untuk membangun dan men-deploy aplikasi yang berjalan secara andal dalam beban berat dan dengan data dalam jumlah besar.
Tutorial ini menggunakan lingkungan standar App Engine untuk men-deploy server.
Di jendela terminal, buat file
app.yamldan salin kode berikut:Deploy aplikasi di App Engine:
gcloud app deployUntuk melihat aplikasi aktif, masukkan URL berikut:
https://PROJECT_ID.REGION_ID.r.appspot.comGanti kode berikut:
PROJECT_ID: Project ID Google Cloud AndaREGION_ID: Kode yang ditetapkan App Engine ke aplikasi Anda
Ucapan kini dikirim oleh server web yang berjalan di instance App Engine.
Menghapus sesi
PHP melakukan pengumpulan sampah (GC) sesi,
yang menghapus sesi lama dan yang sudah berakhir
sesuai dengan konfigurasi php.ini Anda. Handler sesi Firestore
tidak menghapus sesi secara default, tetapi Anda dapat mengonfigurasinya untuk melakukannya
dengan meneruskan opsi gcLimit saat membuat handler sesi:
Sesi dihapus menggunakan GC sesi berbasis probabilitas, atau saat Anda memanggil
fungsi session_gc secara eksplisit.
Men-debug aplikasi
Jika Anda tidak dapat terhubung ke aplikasi App Engine, periksa hal-hal berikut:
- Periksa apakah perintah deployment
gcloudberhasil diselesaikan dan tidak menghasilkan error. Jika ada error (misalnya,message=Build failed), perbaiki, lalu coba men-deploy aplikasi App Engine lagi. Di konsol Google Cloud , buka halaman Logs Explorer.
Di menu drop-down Recently selected resources, klik App Engine Application, lalu klik All module_id. Anda akan melihat daftar permintaan sejak Anda mengunjungi aplikasi. Jika Anda tidak melihat daftar permintaan, pastikan Anda memilih Semua module_id dari daftar drop-down. Jika Anda melihat pesan error yang dicetak ke konsol Google Cloud , periksa apakah kode aplikasi Anda cocok dengan kode di bagian tentang penulisan aplikasi web.
Pastikan Firestore API diaktifkan.
Pembersihan
Menghapus project
- Di Konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus instance App Engine
- Di konsol Google Cloud , buka halaman Versions untuk App Engine.
- Pilih kotak centang untuk versi aplikasi non-default yang ingin Anda hapus.
- Untuk menghapus versi aplikasi, klik Hapus.