Artikel ini menjelaskan secara rinci mekanisme operasi yang mendasari PHP, termasuk pengoperasian konten PHP, dan menjelaskan seluruh siklus hidup PHP dari startup hingga berhenti dengan contoh.
Pendahuluan
Kami tidak pernah memulai proses terkait PHP secara manual, ini berjalan dengan startup Apache PHP terhubung ke Apache melalui modul mod_php5.so (khususnya, SAPI, antarmuka pemrograman aplikasi server
PHP memiliki total tiga Modul: kernel, mesin Zend, dan lapisan ekstensi PHP digunakan untuk menangani permintaan, aliran file, penanganan kesalahan, dan operasi terkait lainnya; Mesin Zend (ZE) digunakan untuk mengubah file sumber ke dalam bahasa mesin dan kemudian menjalankannya di mesin virtual; Lapisan ekstensi adalah sekumpulan fungsi, pustaka, dan aliran yang digunakan PHP untuk melakukan operasi tertentu. Misalnya, kita memerlukan ekstensi mysql untuk terhubung ke database MySQL; ketika ZE menjalankan program, mungkin perlu terhubung ke beberapa ekstensi. Saat ini, ZE menyerahkan kendali ke ekstensi dan mengembalikannya setelah memproses tugas tertentu ;
terakhir, ZE mengembalikan hasil program yang berjalan ke kernel PHP, yang kemudian mengirimkan hasilnya ke lapisan SAPI dan akhirnya mengeluarkannya ke browser.
Tidaklah mudahuntuk menyelidiki
cara kerja realitas. Proses di atas hanyalah versi yang disederhanakan, mari kita gali lebih dalam untuk melihat apa lagi yang terjadi di balik layar.
◆Setelah Apache dimulai, penerjemah PHP juga dimulai;
◆Proses startup PHP memiliki dua langkah:
Langkah pertama adalah menginisialisasi beberapa variabel lingkungan, yang akan berlaku sepanjang siklus hidup SAPI;
Langkah kedua adalah membuat beberapa pengaturan variabel yang hanya spesifik untuk permintaan saat ini.
langkah pertama saat memulai PHP
? Apa langkah pertama dan kedua? Jangan khawatir, selanjutnya kita akan membahasnya secara detail. Mari kita lihat langkah pertama dan terpenting terlebih dahulu. Hal yang perlu diingat adalah langkah pertama operasi terjadi sebelum permintaan apa pun tiba.
Setelah memulai Apache, juru bahasa PHP juga memulai;
PHP memanggil metode MINIT dari setiap ekstensi, sehingga mengalihkan ekstensi ini ke status tersedia. Lihatlah ekstensi apa yang dibuka di file php.ini; MINIT berarti "inisialisasi modul". Setiap modul mendefinisikan sekumpulan fungsi, perpustakaan kelas, dll. untuk menangani permintaan lainnya.
Metode MINIT yang umum adalah sebagai berikut:
PHP_MINIT_FUNCTION(extension_name){
/* Inisialisasi fungsi, kelas, dll */
}
PHP memulai langkah kedua.
Ketika permintaan halaman terjadi, lapisan SAPI menyerahkan kendali ke lapisan PHP. Jadi PHP menetapkan variabel lingkungan yang diperlukan untuk membalas permintaan ini. Pada saat yang sama, ini juga membuat tabel variabel untuk menyimpan nama variabel dan nilai yang dihasilkan selama eksekusi.
PHP memanggil metode RINIT dari setiap modul, yaitu "meminta inisialisasi". Contoh klasiknya adalah RINIT dari modul Session. Jika modul Session diaktifkan di php.ini, variabel $_SESSION akan diinisialisasi dan konten yang relevan akan dibaca ketika RINIT dari modul tersebut dipanggil
; dianggap sebagai Proses persiapan dimulai secara otomatis di antara eksekusi program.
Metode RINIT yang umum adalah sebagai berikut:
PHP_RINIT_FUNCTION(extension_name) {
/* Inisialisasi variabel sesi, isi variabel terlebih dahulu, definisikan ulang variabel global, dll */
}
Langkah pertama penutupan PHP
sama dengan startup PHP. Shutdown PHP juga dibagi menjadi dua langkah:
Setelah halaman dieksekusi (apakah itu mencapai akhir file atau diakhiri dengan fungsi keluar atau mati), PHP akan dimulai proses pembersihan. Ini akan memanggil metode RSHUTDOWN setiap modul secara berurutan.
RSHUTDOWN digunakan untuk menghapus tabel simbol yang dihasilkan saat program sedang berjalan, yaitu memanggil fungsi yang tidak disetel pada setiap variabel.
Metode RSHUTDOWN yang umum adalah sebagai berikut:
PHP_RSHUTDOWN_FUNCTION(extension_name) {
/* Lakukan manajemen memori, hapus semua variabel yang digunakan dalam panggilan PHP terakhir, dll */
}
langkah kedua penutupan PHP
, semua permintaan telah diproses dan SAPI siap untuk dimatikan. PHP mulai menjalankan langkah kedua:
PHP memanggil metode MSHUTDOWN dari setiap ekstensi untuk melepaskan ingatan.
Metode RSHUTDOWN yang umum adalah sebagai berikut:
PHP_MSHUTDOWN_FUNCTION(extension_name) {
/* Penangan gratis dan memori persisten dll */
}
Dengan cara ini, seluruh siklus hidup PHP telah berakhir. Perlu diperhatikan bahwa "memulai langkah pertama" dan "menutup langkah kedua" hanya akan dijalankan bila tidak ada permintaan dari server.