真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP7內(nèi)核剖析之CGI與FastCGI是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了PHP7內(nèi)核剖析之CGI與FastCGI是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)成都定制網(wǎng)頁設(shè)計等服務(wù)項目。核心團(tuán)隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都小攪拌車等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時也獲得了客戶的一致稱譽(yù)!

CGI:是 Web Server 與 Web Application 之間數(shù)據(jù)交換的一種協(xié)議。

FastCGI:同 CGI,是一種通信協(xié)議,但比 CGI 在效率上做了一些優(yōu)化。

PHP-CGI:是 PHP (Web Application)對 Web Server 提供的 CGI 協(xié)議的接口程序。

PHP-FPM:是 PHP(Web Application)對 Web Server 提供的 FastCGI 協(xié)議的接口程序,額外還提供了相對智能一些任務(wù)管理

CGI工作流程

1.如果客戶端請求的是 index.html,那么Web Server會去文件系統(tǒng)中找到這個文件,發(fā)送給瀏覽器,這里分發(fā)的是靜態(tài)數(shù)據(jù)。

2.當(dāng)Web Server收到 index.php 這個請求后,會啟動對應(yīng)的 CGI 程序,這里就是PHP的解析器。接下來PHP解析器會解析php.ini文件,初始化執(zhí)行環(huán)境,然后處理請求,再以規(guī)定CGI規(guī)定的格式返回處理后的結(jié)果,退出進(jìn)程,Web server再把結(jié)果返回給瀏覽器。

FastCGI工作流程

1.如果客戶端請求的是 index.html,那么Web Server會去文件系統(tǒng)中找到這個文件,發(fā)送給瀏覽器,這里分發(fā)的是靜態(tài)數(shù)據(jù)。

2.當(dāng)Web Server收到 index.php 這個請求后,FastCGI程序(FastCGI在啟動時就初始化執(zhí)行執(zhí)行環(huán)境,每個CGI進(jìn)程池各個CGI進(jìn)程共享執(zhí)行環(huán)境)在CGI進(jìn)程池中選擇一個CGI進(jìn)程處理請求,再以規(guī)定CGI規(guī)定的格式返回處理后的結(jié)果,繼續(xù)等待下一個請求。

PHP-FPM基本實(shí)現(xiàn)

1.PHP-FPM的實(shí)現(xiàn)就是創(chuàng)建一個master進(jìn)程,在master進(jìn)程中創(chuàng)建worker pool并讓其監(jiān)聽socket,然后fork出多個子進(jìn)程(work),這些子進(jìn)程各自accept請求,子進(jìn)程的處理非常簡單,它在啟動后阻塞在accept上,有請求到達(dá)后開始讀取請求數(shù)據(jù),讀取完成后開始處理然后再返回,在這期間是不會接收其它請求的,也就是說PHP-FPM的子進(jìn)程同時只能響應(yīng)一個請求,只有把這個請求處理完成后才會accept下一個請求

2.PHP-FPM的master進(jìn)程與worker進(jìn)程之間不會直接進(jìn)行通信,master通過共享內(nèi)存獲取worker進(jìn)程的信息,比如worker進(jìn)程當(dāng)前狀態(tài)、已處理請求數(shù)等,當(dāng)master進(jìn)程要?dú)⒌粢粋€worker進(jìn)程時則通過發(fā)送信號的方式通知worker進(jìn)程。

3.PHP-FPM可以同時監(jiān)聽多個端口,每個端口對應(yīng)一個worker pool,而每個pool下對應(yīng)多個worker進(jìn)程

PHP7內(nèi)核剖析之CGI與FastCGI是什么

Worker工作流程

1.等待請求: worker進(jìn)程阻塞在fcgi_accept_request()等待請求;

2.解析請求: fastcgi請求到達(dá)后被worker接收,然后開始接收并解析請求數(shù)據(jù),直到request數(shù)據(jù)完全到達(dá);

3.請求初始化: 執(zhí)行php_request_startup(),此階段會調(diào)用每個擴(kuò)展的:PHP_RINIT_FUNCTION();

4.編譯、執(zhí)行: 由php_execute_script()完成PHP腳本的編譯、執(zhí)行;

5.關(guān)閉請求: 請求完成后執(zhí)行php_request_shutdown(),此階段會調(diào)用每個擴(kuò)展的:PHP_RSHUTDOWN_FUNCTION(),然后進(jìn)入步驟(1)等待下一個請求。

Master進(jìn)程管理

1.static: 這種方式比較簡單,在啟動時master按照pm.max_children配置fork出相應(yīng)數(shù)量的worker進(jìn)程,即worker進(jìn)程數(shù)是固定不變的

2.dynamic: 動態(tài)進(jìn)程管理,首先在fpm啟動時按照pm.start_servers初始化一定數(shù)量的worker,運(yùn)行期間如果master發(fā)現(xiàn)空閑worker數(shù)低于pm.min_spare_servers配置數(shù)(表示請求比較多,worker處理不過來了)則會fork worker進(jìn)程,但總的worker數(shù)不能超過pm.max_children,如果master發(fā)現(xiàn)空閑worker數(shù)超過了pm.max_spare_servers(表示閑著的worker太多了)則會殺掉一些worker,避免占用過多資源,master通過這4個值來控制worker數(shù)

3.ondemand: 這種方式一般很少用,在啟動時不分配worker進(jìn)程,等到有請求了后再通知master進(jìn)程fork worker進(jìn)程,總的worker數(shù)不超過pm.max_children,處理完成后worker進(jìn)程不會立即退出,當(dāng)空閑時間超過pm.process_idle_timeout后再退出

PHP-FPM事件管理器

1.sp[1]管道可讀事件:這個事件是master用于處理信號的

2.fpm_pctl_perform_idle_server_maintenance_heartbeat():這是進(jìn)程管理實(shí)現(xiàn)的主要事件,master啟動了一個定時器,每隔1s觸發(fā)一次,主要用于dynamic、ondemand模式下的worker管理,master會定時檢查各worker pool的worker進(jìn)程數(shù),通過此定時器實(shí)現(xiàn)worker數(shù)量的控制

3.fpm_pctl_heartbeat():這個事件是用于限制worker處理單個請求大耗時的,php-fpm.conf中有一個request_terminate_timeout的配置項,如果worker處理一個請求的總時長超過了這個值那么master將會向此worker進(jìn)程發(fā)送kill -TERM信號殺掉worker進(jìn)程,此配置單位為秒,默認(rèn)值為0表示關(guān)閉此機(jī)制

4.fpm_pctl_on_socket_accept():ondemand模式下master監(jiān)聽的新請求到達(dá)的事件,因?yàn)閛ndemand模式下fpm啟動時是不會預(yù)創(chuàng)建worker的,有請求時才會生成子進(jìn)程,所以請求到達(dá)時需要通知master進(jìn)程

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享PHP7內(nèi)核剖析之CGI與FastCGI是什么內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司,詳細(xì)的解決方法等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前題目:PHP7內(nèi)核剖析之CGI與FastCGI是什么-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/dgeige.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部