国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php教程 php手冊(cè) 【轉(zhuǎn)】搞清FastCgi與PHP-fpm之間的關(guān)系

【轉(zhuǎn)】搞清FastCgi與PHP-fpm之間的關(guān)系

Jul 06, 2016 pm 01:28 PM

  問(wèn)題:網(wǎng)上有的說(shuō),fastcgi是一個(gè)協(xié)議,php-fpm實(shí)現(xiàn)了這個(gè)協(xié)議; 有的說(shuō),php-fpm是fastcgi進(jìn)程的管理器,用來(lái)管理fastcgi進(jìn)程的; 有的說(shuō),php-fpm是php內(nèi)核的一個(gè)補(bǔ)丁; 有的說(shuō),修改了php.ini配置文件后,沒(méi)辦法平滑重啟,所以就誕生了php-fpm; 還有的說(shuō)PHP-CGI是PHP自帶的FastCGI管理器

  首先,CGI是干嘛的?CGI是為了保證web server傳遞過(guò)來(lái)的數(shù)據(jù)是標(biāo)準(zhǔn)格式的,方便CGI程序的編寫(xiě)者。

  web server(比如說(shuō)nginx)只是內(nèi)容的分發(fā)者。比如,如果請(qǐng)求/index.html,那么web server會(huì)去文件系統(tǒng)中找到這個(gè)文件,發(fā)送給瀏覽器,這里分發(fā)的是靜態(tài)數(shù)據(jù)。好了,如果現(xiàn)在請(qǐng)求的是/index.php, 根據(jù)配置文件,nginx知道這個(gè)不是靜態(tài)文件,需要去找PHP解析器來(lái)處理,那么他會(huì)把這個(gè)請(qǐng)求簡(jiǎn)單處理后交給PHP解析器。Nginx會(huì)傳哪些數(shù)據(jù)給 PHP解析器呢?url要有吧,查詢(xún)字符串也得有吧,POST數(shù)據(jù)也要有,HTTP header不能少吧,好的,CGI就是規(guī)定要傳哪些數(shù)據(jù)、以什么樣的格式傳遞給后方處理這個(gè)請(qǐng)求的協(xié)議。仔細(xì)想想,你在PHP代碼中使用的用戶(hù)從哪里來(lái) 的。

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

  好了,CGI是個(gè)協(xié)議,跟進(jìn)程什么的沒(méi)關(guān)系。那fastcgi又是什么呢?Fastcgi是用來(lái)提高CGI程序性能的。

  提高性能,那么CGI程序的性能問(wèn)題在哪呢?"PHP解析器會(huì)解析php.ini文件,初始化執(zhí)行環(huán)境",就是這里了。標(biāo)準(zhǔn)的CGI對(duì)每個(gè)請(qǐng)求都會(huì)執(zhí)行這 些步驟(不閑累啊!啟動(dòng)進(jìn)程很累的說(shuō)?。?,所以處理每個(gè)時(shí)間的時(shí)間會(huì)比較長(zhǎng)。這明顯不合理嘛!那么Fastcgi是怎么做的呢?首先,F(xiàn)astcgi會(huì)先 啟一個(gè)master,解析配置文件,初始化執(zhí)行環(huán)境,然后再啟動(dòng)多個(gè)worker。當(dāng)請(qǐng)求過(guò)來(lái)時(shí),master會(huì)傳遞給一個(gè)worker,然后立即可以接 受下一個(gè)請(qǐng)求。這樣就避免了重復(fù)的勞動(dòng),效率自然是高。而且當(dāng)worker不夠用時(shí),master可以根據(jù)配置預(yù)先啟動(dòng)幾個(gè)worker等著;當(dāng)然空閑 worker太多時(shí),也會(huì)停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是fastcgi的對(duì)進(jìn)程的管理。

  那PHP-FPM又是什么呢?是一個(gè)實(shí)現(xiàn)了Fastcgi的程序,被PHP官方收了。

  大家都知道,PHP的解釋器是php-cgi。php-cgi只是個(gè)CGI程序,他自己本身只能解析請(qǐng)求,返回結(jié)果,不會(huì)進(jìn)程管理(皇上,臣妾真的做不到 ?。。┧跃统霈F(xiàn)了一些能夠調(diào)度php-cgi進(jìn)程的程序,比如說(shuō)由lighthttpd分離出來(lái)的spawn-fcgi。好了PHP-FPM也是這么個(gè) 東東,在長(zhǎng)時(shí)間的發(fā)展后,逐漸得到了大家的認(rèn)可(要知道,前幾年大家可是抱怨PHP-FPM穩(wěn)定性太差的),也越來(lái)越流行。

  好了,最后來(lái)回來(lái)你的問(wèn)題。
  1、網(wǎng)上有的說(shuō),fastcgi是一個(gè)協(xié)議,php-fpm實(shí)現(xiàn)了這個(gè)協(xié)議

  對(duì)。

 ?? 2、有的說(shuō),php-fpm是fastcgi進(jìn)程的管理器,用來(lái)管理fastcgi進(jìn)程的

  對(duì)。php-fpm的管理對(duì)象是php-cgi。但不能說(shuō)php-fpm是fastcgi進(jìn)程的管理器,因?yàn)榍懊嬲f(shuō)了fastcgi是個(gè)協(xié)議,似乎沒(méi)有這么個(gè)進(jìn)程存在,就算存在php-fpm也管理不了他(至少目前是)。 有的說(shuō),php-fpm是php內(nèi)核的一個(gè)補(bǔ)丁以前是對(duì)的。因?yàn)樽铋_(kāi)始的時(shí)候php-fpm沒(méi)有包含在PHP內(nèi)核里面,要使用這個(gè)功能,需要找到與源碼版本相同的php-fpm對(duì)內(nèi)核打補(bǔ)丁,然后再編譯。后來(lái)PHP內(nèi)核集成了PHP-FPM之后就方便多了,使用--enalbe-fpm這個(gè)編譯參數(shù)即可。

  3、有的說(shuō),修改了php.ini配置文件后,沒(méi)辦法平滑重啟,所以就誕生了php-fpm

  是的,修改php.ini之后,php-cgi進(jìn)程的確是沒(méi)辦法平滑重啟的。php-fpm對(duì)此的處理機(jī)制是新的worker用新的配置,已經(jīng)存在的worker處理完手上的活就可以歇著了,通過(guò)這種機(jī)制來(lái)平滑過(guò)度。

  4、還有的說(shuō)PHP-CGI是PHP自帶的FastCGI管理器,那這樣的話(huà)干嗎又弄個(gè)php-fpm出

  不對(duì)。php-cgi只是解釋PHP腳本的程序而已。

  原文摘自:https://segmentfault.com/q/1010000000256516

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1600
29
PHP教程
1502
276