成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

一文帶你深入剖析PHP-FMP

本篇文章給大家詳解介紹一下PHP-FMP。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

一文帶你深入剖析PHP-FMP

什么是php-fpm

  • 在了解php-fpm之前,請大家先思考一個問題,一個用戶發(fā)起了一個web(niginx服務器)請求,在php代碼里面,那么我們怎么樣才可以通過 $_POST,$_GET,$_SERVER獲取一些請求信息呢?我們應該參照什么格式去組裝數(shù)據(jù)呢?

其實我們知道,每種動態(tài)語言,也就是解釋性語言,都需要通過對應的解析器才能被服務器(這里指web服務器)識別,但是解釋器和服務器 必須遵循某種協(xié)議,雙方才能夠正常通信,那么這種協(xié)議就是CGI協(xié)議,但是CGI的機制是每響應一次web請求,都會創(chuàng)建和初始化一個新的處理進程,請求結束就kill掉這個進程。那每次請求,都要執(zhí)行這三步 創(chuàng)建->初始化->結束,那其實這個過程不僅浪費了資源,而且效率也很低。那怎么辦?FastCGI應時而生,作為CGI的改良版本,F(xiàn)astCGI會啟動一個常駐服務進程,這個進程不需要管理生命周期,也就避免了進程的重復的創(chuàng)建和結束,另一方面,不需要再重復的讀取環(huán)境變量,每當有web請求過來,由FastCGI管理器,也就那個常駐服務進程去啟動CGI解釋器進程

一文帶你深入剖析PHP-FMP

  • 好了,既然有了CGI,那么針對這些解釋性語言,比如php phython,都要根據(jù)自己的語言做一個適配吧。那么php官方就弄出來了PHP-CGI,php定制版的CGI。
  • 但是隨著使用,大家發(fā)現(xiàn)了PHP-CGI的問題

1.修改php.ini 后必須重啟PHP-CGI才可以生效,而不能實現(xiàn)平滑重啟 2.直接干掉PHP-CGI,php就不能運行了,這顯然是不能接受的 3.這玩意不會自己管理進程,它只能解析請求,返回結果

那么FastCGI都已經(jīng)到來了,php的FastCGI還會遠嗎,當然不會,到 2004年一個叫 Andrei Nigmatulin的屌絲發(fā)明了PHP-FPM,PHP-FMP 全名叫做PHP-FASTCGI Process Manager,說白了就是php定制版的FastCGI(這里強調(diào)一下,不管是PHP-CGI 還是 PHP-FPM都是為了實現(xiàn)CGI協(xié)議,而不是一種新的協(xié)議),其實有一句話剛才我沒說,網(wǎng)上很多人說PHP-CGI 就是 php管理FAST-CGI的一種程序,那你現(xiàn)在知道了PHP-FMP 全名叫做PHP-FASTCGI Process Manager之后,你可以理直氣壯的跟他們說no,并給他們普及一下這個知識點了。

php-fpm的進程包括 master(常駐服務程序)和worker進程兩種

master進程
  • master負責進程的調(diào)度(比如worker進程不夠的時候去fork一個子進程)
  • 負責監(jiān)聽端口,一般是9000這個端口,可以在配置文件里面設置,當然,還有另外一種方式,就是通過socket,可以通過netstat -nap | grep master的進程號 查看端口信息(9000端口其實就是tcp的通信方式,而socket是說的unix socket,從效率上來說,unix socket顯然是最好的,因為它是進程之間的通信,但是unix socket要保證是在一臺服務器,如果是不同機器之間的通信,還是要使用tcp通信)

一文帶你深入剖析PHP-FMP

一文帶你深入剖析PHP-FMP

  • 接收來自服務器的請求
work進度 看名字就知道了,就是真正的打工階級,代碼真正執(zhí)行的地方

一文帶你深入剖析PHP-FMP

  • 再來看看php-fmp和nignx是怎么通信的

以socker通信為栗子,nginx的conf文件里面,可以看到下面這段信息

        location ~ [^/].php(/|$)         {             try_files $uri =404;             fastcgi_pass  unix:/tmp/php-cgi.sock;             fastcgi_index index.php;             include fastcgi.conf;         }

相信這段信息大家都可以看明白,/tmp/php-cgi.sock 就是php和nginx聯(lián)系的橋梁,同時我們也看到了include fastcgi.conf,我們來看一下

root@6d05153a8988:/usr/local/nginx/conf# cat fastcgi.conf  fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; fastcgi_param  QUERY_STRING       $query_string; fastcgi_param  REQUEST_METHOD     $request_method; fastcgi_param  CONTENT_TYPE       $content_type; fastcgi_param  CONTENT_LENGTH     $content_length;  fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; fastcgi_param  REQUEST_URI        $request_uri; fastcgi_param  DOCUMENT_URI       $document_uri; fastcgi_param  DOCUMENT_ROOT      $document_root; fastcgi_param  SERVER_PROTOCOL    $server_protocol; fastcgi_param  REQUEST_SCHEME     $scheme; fastcgi_param  HTTPS              $https if_not_empty;  fastcgi_param  GATEWAY_INTERFACE  CGI/1.1; fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;  fastcgi_param  REMOTE_ADDR        $remote_addr; fastcgi_param  REMOTE_PORT        $remote_port; fastcgi_param  SERVER_ADDR        $server_addr; fastcgi_param  SERVER_PORT        $server_port; fastcgi_param  SERVER_NAME        $server_name;  # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param  REDIRECT_STATUS    200; fastcgi_param PHP_ADMIN_VALUE "open_basedir=NULL";

我們看到了一些熟悉的,比如REMOTE_ADDR,REQUEST_URI,現(xiàn)在你應該明白了,我們通過$_SERVER獲取到的信息就是這個配置文件里面指定的

我們再來看一下php-fmp的配置文件(請注意看里面的注釋,我不做解釋了)

root@6d05153a8988:/usr/local/php/etc# cat php-fpm.conf [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice  [www] listen = /tmp/php-cgi.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www # 如何控制子進程,選項有static和dynamic #區(qū)別: #如果dm設置為 static,那么其實只有pm.max_children這個參數(shù)生效。系統(tǒng)會開#啟設置數(shù)量的php-fpm進程。 #如果dm設置為 dynamic,那么pm.max_children參數(shù)失效,后面3個參數(shù)生效。 #系統(tǒng)會在php-fpm運行開始 的時候啟動pm.start_servers個php-fpm進程, #然后根據(jù)系統(tǒng)的需求動態(tài)在pm.min_spare_servers和pm.max_spare_servers之#間調(diào)整php-fpm進程數(shù)。 pm = dynamic # 靜態(tài)方式下開啟的php-fpm進程數(shù)量 pm.max_children = 20 # 動態(tài)方式下的起始php-fpm進程數(shù)量 pm.start_servers = 10 # 動態(tài)方式下的最小php-fpm進程數(shù) pm.min_spare_servers = 10 # 動態(tài)方式下的最大php-fpm進程數(shù)量 pm.max_spare_servers = 20 # php-fpm子進程能處理的最大請求數(shù) pm.max_requests = 1024 pm.process_idle_timeout = 10s request_terminate_timeout = 100 request_slowlog_timeout = 0 slowlog = var/log/slow.log
  • 關于php-fpm 的相關操作

INT, TERM QUIT 平滑終止 USR1 重新打開日志文件 USR2 平滑重載所有worker進程并重新載入配置和二進制模塊

啟動: /usr/local/php/sbin/php-fpm查看進程數(shù): ps aux | grep -c php-fpm查看mater進程號:ps aux|grep 'php-fpm: master'|grep -v grep|awk '{print $2}' 或者cat /usr/local/php/var/run/php-fpm.pid

# 強制關閉 pkill php-fpm  kill -INT `cat /usr/local/php/var/run/php-fpm.pid`  kill -INT [pid]  # 平滑重啟 其實就是通過創(chuàng)建新的進程使 php.ini 生效 kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` kill -USR2 [pid]
小結

至此,php-fpm 算是說完了,其實通過上面的解說,大家也會明白一個問題,為什么lnmp 承受的并發(fā)比lamp高,除了nginx的高性能之外,php-fpm 是不是也是其中的一個原因呢?

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
幼儿交1300部多少钱| 国产精品门事件AV| 性生大片免费观看网站蜜芽| 久久久久久精品免费免费软件| AAAAA级少妇高潮大片免费看| 日韩人妻中文字幕2021视频| 幻女FREE性俄罗斯毛片| FREE性欧美╳╳╳HD| 五月丁香伊人久久91视频| 久久久久久人妻一区精品| 成人AV片无码免费天天看| 亚洲国产成人久久综合同性| 欧美亚洲日韩AⅤ在线观看| 国产女人天天春夜夜春 | 国产免费无遮挡吸奶头视频| 中文字幕高清免费日韩视频在线 | 久久精品国产99国产精偷| 91人妻人人做人碰人人爽九色| 午夜麻豆国产精品无码| 奶头被民工们吸得又红又肿怎么办 | 泳池里强摁做开腿呻吟漫画视频 | 中国丰满熟妇XXXX性| 色噜噜人妻av无码| 男女啪啪无遮挡免费网站| 娇妻在卧室里被领导爽电影| 成人片在线观看地址KK4444| 亚洲VA久久久噜噜噜久久天堂| 人妻无码不卡中文字幕在线视频| 久久久久久久波多野结衣高潮| 爸爸入狱以后妈妈双人桥小权| 尤物永久免费AV无码网站| 亚洲AV无码之国产精品| 熟妇高潮一区二区精品| 青青草无码伊人久久| 两个黑人大战嫩白金发美女| 办公室扒开奶罩揉吮奶头AV| 岳丰满多毛的大隂户老太的介绍| 亚洲А∨天堂男人色无码| 无码人妻av一区二区三区毛片| 人妻在厨房被色诱 中文字幕| 女人三A级毛片视频| 浪潮AV色综合久久天堂| 国产性夜夜春夜夜爽| 国产精品高潮露脸在线观看| 爱情岛亚洲AV永久入口首页| CHINESE勾搭VIDEOS| 99精品国产福久久久久久| 亚洲国产精品无码久久一线| 午夜男女爽爽羞羞影院在线观看| 日本高清无卡码一区二区久久| 亲孑伦视频一区二区三区| 漂亮人妻熟睡中被公侵犯中文版| 久久久久亚洲AV无码专区导航| 久久精品国产亚洲AV成人| 久久久亚洲熟妇熟一区二区 | 日本三线和韩国三线品牌对比 | 无码人妻精品一区二区三区免费看 | 在人间电影在线观看完整版| 中文字幕人妻丝袜成熟乱九区| 亚洲人成国产精品无码果冻| 夜夜躁狠狠躁2021| 99精品无人区乱码1区2区3区 | 麻豆国产在线精品国偷产拍| 男人J进入女人P呻吟视频免费| 久久精品无码中文字幕| 免费A级毛片18禁网站APP| 欧美在线视频一区二区| 欧美日韩中文国产一区发布| 欧美成人家庭影院| 天天看片天天AV免费观看| 久久99精品久久水蜜桃| 欧美丰满熟妇XXXX性PPX人| 日韩精品无码一本二本三本| 无码人妻精品一区二区三区99不| 亚洲精品国产一二三无码AV| 中文无码人妻丰满熟妇啪啪| А√天堂资源中文在线官网| 国产精华AV午夜在线观看| 精品亚洲国产成人蜜臀优播AV| 女人高潮抽搐30分钟| 玩弄JAPAN白嫩少妇HD| 亚洲AV激情无码专区在线下载 | 欧美熟妇激情一区二区三区| 天堂久久久久VA久久久久| 天天躁夜夜躁天干天干2020| 中国大陆女RAPPER欢迎你| 草棚CAOPORON已满18进| 精品久久久久久狼人社区| 人妻少妇AV中文字幕乱码| 欧美午夜性春猛交ⅩXXX| 亚洲AV无码天堂一区二区三区| 成人精品免费视频在线观看| 狂野欧美性猛XXXX乱大交| 无码无套少妇毛多18PX| 锕锕锕锕锕锕好污网站大全 | 亚洲色欲色欲综合网站| 高黄暴H日本在线观看| 男人扒开添女人下部免费视频| 西西人体444WWW大胆无码视| 公和熄洗澡三级中文字幕| 人人妻人人澡人人爽人人精品电影| 一区二区三区在线 | 欧洲| 韩国三级在线观看| 婷婷色婷婷开心五月| 把腿张开老子臊烂h视频 | 亚洲一区二区无码偷拍| 好儿子妈妈今后就是你的人| 少妇高潮喷水久久久影院| 啊~CAO死你个小SAO货视频| 久久久久久精品无码人妻| 亚洲AV优女天堂熟女| 国产日产欧产精品精品| 性生大片免费观看性| 国产三级无码内射在线看| 无码毛片内射白浆视频| 夫妻之间的100种插秧法| 日产精品乱码卡一卡2卡三网站| 97久人人做人人妻人人玩精品| 老旺的大肉蟒进进出出次视频| 亚洲人成网站在线播放942| 寂寞夜晚看的MV字幕高清网站 | 国产艳妇AV在线出轨| 无码熟妇人妻在线视频| 国产成人无码免费视频97APP| 丝袜 亚洲 另类 欧美 变态| 厨房人妻HD中文字幕69XX| 色鬼7777久久| 国产成人无码AⅤ片在线观看| 天美传媒MV免费观看软件特色 | 性BBBBBB裸体BBBBB开| 果冻传媒免费观看4399| 亚洲AV秘 无码一区白峰美| 狠狠色丁香婷婷综合久久图片| 亚洲成A人片在线不卡一二三区| 狠狠色丁香久久婷婷综合_中| 亚洲国产精品久久人人爱| 精品国产AⅤ一区二区三区| 亚洲中文无码a∨在线观看| 另类极品VPSWINDOWS| CSGO未满十八岁能玩多久| 日本AⅤ精品一区二区三区久久| 大乱东京道一本热大交乱| 亚洲 中文字幕在线播| 精品人人妻人人澡人人爽人人| 尤物YW午夜国产精品视频| 秋霞电影院午夜无码中文| 国产AV精品一区二区三区| 亚洲AV最新在线网址| 老师你的好软水好多的时候图片 | 成人免费视频CAOPORN| 香草乱码一二三四区别| 久久久中精品2020中文| 伴郎粗大的内捧猛烈进出视频观看| 特级西西WWW.444人体聚色| 精品无码三级在线观看视频 | 欧美、另类亚洲日本一区二区| 岛国岛国免费V片在线观看| 亚洲成AV人片在线播放无码| 女人高潮被爽到呻吟在线观看| 国产成人AV在线影院| 亚洲线精品一区二区三区| 人妻无码熟妇乱又伦精品| 激情影视乱码AV| 超碰人人看人人2017| 亚洲熟妇A∨日韩熟妇在线| 日本一线和三线的区别是什么| 九九久久精品无码专区| 成人奭片免费观看| 野花视频在线观看免费高清版| 日本XXXⅩ色视频免费观看| 精品久久人人爽天天玩人人妻| 亚洲国产精品第一区二区| 久久精品国产9久久综合| 办公室被公司领导C了很多次 | 久久人妻AV无码中文专区| 国产免费无码一区二区视频| 别揉我奶头~嗯~啊~动态图视频| 伊人久久大香线蕉AV网禁呦| 亚洲AV成人永久网站www在线| 日韩精品成人无码专区免费| 女人与牛ZOZO| 久久久久久精品免费免费直播 | 无码精品一区二区三区视频色欲网| 女生裙子里面到底穿了啥 | 9I国产麻豆国产AV旗袍| 曰批全过程免费视频观看软件| 亚洲AV无码AV在线影院| 五级黄高潮片90分钟视频| 天堂种子在线WWW网| 天堂VA欧美ⅤA亚洲VA老司机| 日产精品一线二线三线优势| 人妻少妇中文字幕| 日本免费精品一区二区三区| 欧美综合自拍亚洲综合图片区 | 亚洲欧美中文日韩V在线观看不卡| 无码AV专区丝袜专区| 色噜噜国产精品视频一区二区| 日产精品一线二线三线京东| 日日麻批免费40分钟无码| 揉着我的奶从后面进去|