SAPI
Mod larian PHP yang disebut di sini sebenarnya merujuk kepada SAPI (Antara Muka Pengaturcaraan Aplikasi Pelayan, port pengaturcaraan aplikasi pelayan). SAPI menyediakan antara muka untuk PHP berkomunikasi dengan dunia luar PHP menggunakan antara muka ini untuk berinteraksi dengan aplikasi lain. Untuk senario aplikasi yang berbeza, PHP juga menyediakan pelbagai SAPI yang berbeza termasuk: apache, apache2filter, apache2handler, cli, cgi, embed, fast-cgi, isapi, dll.
php_sapi_name()
— Mengembalikan jenis antara muka antara pelayan web dan PHP. Nilai yang mungkin dikembalikan termasuk aolserver, apache, apache2filter, apache2handler, caudium, cgi (sehingga PHP 5.3), cgi-fcgi, cli, cli-server, kesinambungan, embed, fpm-fcgi, isapi, litespeed, milter, nsapi, phttpd , pi3web, roxen, thttpd, tux dan webjames.
Banyak pelaksanaan SAPI yang terbina dalam PHP tidak lagi diselenggara atau menjadi agak bukan arus perdana Komuniti PHP sedang mempertimbangkan untuk memindahkan beberapa SAPI daripada pangkalan kod. Komuniti menganggap banyak ciri berada dalam perpustakaan PECL melainkan ia benar-benar diperlukan, atau beberapa ciri hampir universal.
Lima daripada mod pengendalian yang lebih biasa akan diterangkan di bawah.
Mod CLI
CLI (Antara Muka Baris Perintah), iaitu antara muka baris arahan, PHP akan dipasang secara lalai. Melalui antara muka ini, anda boleh berinteraksi dengan PHP dalam persekitaran shell. Masukkan php -v
dalam terminal, dan anda akan mendapat hasil yang serupa dengan gambar di bawah (dengan syarat PHP dipasang):
Kerana kewujudan CLI, Kita boleh menjalankan skrip PHP secara langsung dalam baris arahan terminal, sama seperti menggunakan shell atau Python, tanpa bergantung pada pelayan WEB. Sebagai contoh, alat baris arahan Artisan dalam rangka kerja Laravel sebenarnya adalah skrip PHP yang digunakan untuk membantu kami membina aplikasi Laravel dengan cepat.
Mod CGI
CGI (Antara Muka Gerbang Biasa, Antara Muka Gerbang Biasa) ialah teknologi Internet penting yang membolehkan pelanggan beralih daripada pelayar web ke program yang dilaksanakan pada pelayan rangkaian Data Permintaan. CGI menerangkan standard untuk memindahkan data antara pelayan dan pengendali permintaan.
Pelayan WEB hanyalah pengedar kandungan. Sebagai contoh, Nginx, jika pelanggan meminta /index.html
, maka Nginx akan mencari fail dalam sistem fail dan menghantarnya ke penyemak imbas Apa yang diedarkan di sini adalah data statik jika pelanggan kini meminta /index.php
, mengikut fail konfigurasi, Nginx tahu bahawa ini bukan fail statik dan perlu diproses oleh penghurai PHP, jadi ia hanya akan memproses permintaan dan menyerahkannya kepada penghurai PHP. Data apakah yang akan dihantar oleh Nginx ke parser PHP? URL mesti ada, rentetan pertanyaan mesti ada, data POST mesti ada, dan pengepala permintaan HTTP tidak boleh hilang, CGI ialah protokol yang menetapkan data apa yang akan dihantar dan dalam format apa dihantar ke bahagian belakang untuk memproses permintaan .
Prinsip operasi mod CGI: Apabila Nginx menerima permintaan pelayar /index.php
, ia akan mula-mula mencipta proses yang melaksanakan protokol CGI, berikut ialah php-cgi (penghuraikan PHP). Seterusnya, php-cgi akan menghuraikan fail php.ini, memulakan persekitaran pelaksanaan, memproses permintaan, mengembalikan hasil yang diproses dalam format yang ditentukan oleh CGI, dan keluar dari proses. Akhirnya, Nginx mengembalikan keputusan kepada penyemak imbas. Keseluruhan proses ialah corak Fork-And-Execute
. Apabila bilangan permintaan pengguna adalah sangat besar, sejumlah besar sumber sistem seperti memori dan masa CPU akan diduduki, mengakibatkan prestasi rendah. Oleh itu, di bawah pelayan CGI, akan terdapat banyak sub-proses CGI kerana terdapat permintaan sambungan Pemuatan berulang sub-proses adalah sebab utama prestasi CGI yang rendah.
Kelebihan mod CGI ialah ia bebas sepenuhnya daripada mana-mana pelayan dan hanya bertindak sebagai perantara: menyediakan antara muka kepada pelayan WEB dan bahasa skrip atau pengaturcaraan bebas sepenuhnya bahasa. Mereka disambungkan melalui protokol CGI untuk menyelesaikan pemindahan data. Kelebihan ini adalah untuk meminimumkan korelasi antara mereka, menjadikan masing-masing lebih bebas dan bebas antara satu sama lain.
Mod CGI sudah menjadi mod yang agak lama dan jarang digunakan sejak beberapa tahun kebelakangan ini.
Mod FastCGI
FastCGI (Antara Muka Gerbang Biasa Pantas) ialah protokol yang membenarkan atur cara interaktif berkomunikasi dengan pelayan web. FastCGI ialah versi dipertingkatkan bagi Antara Muka Gerbang Biasa (CGI) yang lebih awal. FastCGI komited untuk mengurangkan overhed interaksi antara pelayan web dan program CGI, supaya pelayan boleh mengendalikan lebih banyak permintaan halaman web pada masa yang sama.
Menurut definisi, FastCGI juga merupakan sebuah protokol Program yang melaksanakan protokol FastCGI lebih seperti program protokol CGI yang bertahan lama selagi ia diaktifkan, ia sentiasa boleh dilaksanakan tidak akan mengambil masa untuk bercabang setiap masa.
Prinsip operasi mod FastCGI: Selepas pengurus proses FastCGI dimulakan, ia akan menghuraikan fail php.ini terlebih dahulu, memulakan persekitaran pelaksanaan, dan kemudian memulakan berbilang daemon penterjemah protokol CGI (daemon penterjemah protokol CGI berbilang boleh dilihat dalam pengurusan proses php-cig atau php-cgi.exe) dan tunggu sambungan daripada pelayan WEB apabila permintaan pelanggan sampai ke pelayan WEB, pengurus proses FastCGI akan memilih dan menyambung kepada penterjemah CGI, dan WEB; pelayan akan pembolehubah persekitaran CGI dan standard Input dihantar ke sub-proses php-cgi FastCGI selepas sub-proses php-cgi menyelesaikan pemprosesan, ia mengembalikan output standard dan maklumat ralat pada pelayan WEB; , sub-proses php-cgi akan menutup sambungan dan permintaan akan diproses Kemudian terus menunggu dan memproses sambungan permintaan seterusnya daripada pengurus proses FastCGI.
Mod FastCGI menggunakan struktur C/S, yang boleh memisahkan pelayan WEB dan pelayan parsing skrip, dan memulakan satu atau lebih daemon parsing skrip pada pelayan parsing skrip. Setiap kali pelayan WEB menemui program dinamik, ia boleh dihantar terus ke proses FastCGI untuk pelaksanaan, dan kemudian hasilnya dikembalikan kepada penyemak imbas. Kaedah ini membolehkan pelayan WEB memproses permintaan statik secara eksklusif atau mengembalikan hasil pelayan skrip dinamik kepada klien, yang meningkatkan prestasi keseluruhan sistem aplikasi.
Selain itu, dalam mod CGI, selepas konfigurasi php.ini php-cgi ditukar, proses php-cgi perlu dimulakan semula untuk konfigurasi php-ini baharu berkuat kuasa, dan mulakan semula lancar adalah tidak mungkin. Dalam mod FastCGI, PHP-FPM boleh mencapai permulaan semula yang lancar selepas pengubahsuaian php.ini dengan menjana proses anak baharu.
PHP-FPM (Pengurus Proses PHP-FastCGI) ialah pengurus proses yang melaksanakan protokol FastCGI dalam bahasa PHP Ia telah ditulis dan dilaksanakan oleh Andrei Nigmatulin Ia telah dimasukkan secara rasmi oleh PHP dan disepadukan ke dalam isirong.
Kelebihan mod FastCGI:
Dari sudut kestabilan, mod FastCGI menggunakan kumpulan proses bebas untuk menjalankan program protokol CGI sistem Ia boleh dibuang dengan mudah dan kemudian ditugaskan semula ke proses baharu untuk menjalankan logik; Program FastCGI adalah bebas sepenuhnya daripada pelayan hos Walaupun program FastCGI ditutup, ia tidak akan menjejaskan pelayan Pemprosesan IO masih diserahkan kepada pelayan hos, supaya pelayan hos boleh mengendalikan IO dengan sepenuh hati laman web dinamik, mungkin terdapat hanya sebahagian kecil daripada pemprosesan logik, dan sejumlah besar imej statik dan kandungan statik lain.
- Mod FastCGI kini merupakan mod operasi perkhidmatan WEB PHP arus perdana Ia mempunyai prestasi yang cekap dan boleh dipercayai serta disyorkan untuk digunakan oleh semua orang.
Mod modul
PHP sering dipasangkan dengan pelayan Apache untuk membentuk persekitaran operasi yang menyokong LAMP. Mengintegrasikan PHP sebagai submodul ke dalam Apache ialah mod Modul Konfigurasi biasa dalam Apache adalah seperti berikut:
Ini menggunakan perintah Parameter pertama perintah itu ialah nama modul . , nama boleh didapati dalam kod sumber pelaksanaan modul. Pilihan kedua ialah laluan di mana modul berada. Jika anda perlu memuatkan modul semasa pelayan sedang berjalan, anda boleh menghantar isyarat
ataukepada pelayan Setelah isyarat diterima, Apache akan memuatkan semula modul tanpa memulakan semula pelayan. Dengan mendaftar ke cangkuk
apache2, modul ini dimulakan apabila Apache mula menerima permintaan untuk fail PHP. Sebagai contoh, apabila pelanggan mengakses fail PHP, Apache memanggilLoadModule php5_module modules/mod_php5.so
Pada masa lalu, dengan modul dan fungsinya yang kaya, perusahaan sering menggunakan Apache sebagai pelayan WEB, jadi gabungan PHP dan Apache yang berjalan dalam mod Modul adalah sangat biasa. Dalam beberapa tahun kebelakangan ini, dengan peningkatan pelayan Nginx berprestasi tinggi yang dipacu peristiwa tak segerak, bahagian pasaran telah berkembang dengan pesat Gabungan PHP Nginx yang berjalan dalam mod FastCGI mempunyai prestasi yang lebih baik dan mempunyai kecenderungan untuk mengejar Apache.
Mod ISAPI
ISAPI (Antara Muka Program Aplikasi Pelayan Internet) ialah satu set antara muka API untuk perkhidmatan Internet yang disediakan oleh Microsoft DLL ISAPI boleh berada dalam ingatan selepas diaktifkan oleh permintaan pengguna. , menunggu permintaan lain daripada pengguna, dan anda juga boleh menetapkan berbilang fungsi pemprosesan permintaan pengguna dalam satu DLL Selain itu, aplikasi ISAPI DLL dan pelayan WEB berada dalam proses yang sama, dan kecekapannya jauh lebih tinggi daripada CGI. Disebabkan oleh eksklusiviti Microsoft, ia hanya boleh dijalankan dalam persekitaran Windows.
jarang digunakan, jadi saya tidak akan memperkenalkannya secara terperinci di sini.
Pembelajaran yang disyorkan: "Tutorial Video PHP"