日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php中的fpm_详解PHP中PHP-FPM是什么?有什么用?

發(fā)布時(shí)間:2024/10/8 php 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中的fpm_详解PHP中PHP-FPM是什么?有什么用? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 進(jìn)程管理器,用于管理PHP 進(jìn)程池的軟件,用于接受web服務(wù)器的請(qǐng)求。

作用

PHP-FPM提供了更好的PHP進(jìn)程管理方式,可以有效控制內(nèi)存和進(jìn)程、可以平滑重載PHP配置。

【相關(guān)推薦:PHP教程】

(1). 為什么會(huì)出現(xiàn)php-fpm

fpm的出現(xiàn)全部因?yàn)閜hp-fastcgi出現(xiàn)。為了很好的管理php-fastcgi而實(shí)現(xiàn)的一個(gè)程序

(2). 什么是php-fastcgi

php-fastcgi 只是一個(gè)cgi程序,只會(huì)解析php請(qǐng)求,并且返回結(jié)果,不會(huì)管理(因此才出現(xiàn)的php-fpm)。

(3)為什么不叫php-cgi

其實(shí)在php-fastcgi出現(xiàn)之前是有一個(gè)php-cgi存在的,只是它的執(zhí)行效率低下,因此被php-fastcgi取代。

(4)那fastcgi和cgi有什么區(qū)別呢?

親們,這區(qū)別就大了,當(dāng)一個(gè)服務(wù)web-server(nginx)分發(fā)過來請(qǐng)求的時(shí)候,通過匹配后綴知道該請(qǐng)求是個(gè)動(dòng)態(tài)的php請(qǐng)求,會(huì)把這個(gè)請(qǐng)求轉(zhuǎn)給php。

在cgi的年代,思想比較保守,總是一個(gè)請(qǐng)求過來后,去讀取php.ini里的基礎(chǔ)配置信息,初始化執(zhí)行環(huán)境,每次都要不停的去創(chuàng)建一個(gè)進(jìn)程,讀取配置,初始化環(huán)境,返回?cái)?shù)據(jù),退出進(jìn)程,久而久之,啟動(dòng)進(jìn)程的工作變的乏味無趣特別累。

當(dāng)php來到了5的時(shí)代,大家對(duì)這種工作方式特別反感,想偷懶的人就拼命的想,我可不可以讓cgi一次啟動(dòng)一個(gè)主進(jìn)程(master),讓他只讀取一次配置,然后在啟動(dòng)多個(gè)工作進(jìn)程(worker),當(dāng)一個(gè)請(qǐng)求來的時(shí)候,通過master傳遞給worker這樣就可以避免重復(fù)勞動(dòng)了。于是就產(chǎn)生了fastcgi。

(5)fastcgi這么好,啟動(dòng)的worker用完怎么辦?

當(dāng)worker不夠的時(shí)候,master會(huì)通過配置里的信息,動(dòng)態(tài)啟動(dòng)worker,等空閑的時(shí)候可以收回worker

(6)到現(xiàn)在還是沒明白php-fpm 是個(gè)什么東西?

就是來管理啟動(dòng)一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程的程序.PHP-FPM 會(huì)創(chuàng)建一個(gè)主進(jìn)程,控制何時(shí)以及如何將HTTP請(qǐng)求轉(zhuǎn)發(fā)給一個(gè)或多個(gè)子進(jìn)程處理。

PHP-FPM主進(jìn)程還控制著什么時(shí)候創(chuàng)建(處理Web應(yīng)用更多的流量)和銷毀(子進(jìn)程運(yùn)行時(shí)間太久或不再需要了)PHP子進(jìn)程。PHP-FPM進(jìn)程池中的每個(gè)進(jìn)程存在的時(shí)間都比單個(gè)HTTP請(qǐng)求長,可以處

理10、50、100、500或更多的HTTP請(qǐng)求。

安裝

PHP在 5.3.3 之后已經(jīng)把php-fpm并入到php的核心代碼中了。 所以php-fpm不需要單獨(dú)的下載安裝。

要想php支持php-fpm,只需要在編譯php源碼的時(shí)候帶上 --enable-fpm 就可以了。

全局配置

在Centos中,PHP-FPM 的主配置文件是 /etc/php7/php-fpm.conf。

指定一段時(shí)間內(nèi)有指定個(gè)子進(jìn)程失效了,PHP-FPM重啟:#在指定的一段時(shí)間內(nèi),如果失效的PHP-FPM子進(jìn)程數(shù)超過這個(gè)值,PHP-FPM主進(jìn)程將優(yōu)雅重啟。

emergency_restart_threshold = 10

#設(shè)定emergency_restart_interval 設(shè)置采用的時(shí)間跨度。

emergency_restart_interval = 1m

配置進(jìn)程池

PHP-FPM配置文件其余的內(nèi)容是一個(gè)名為Pool Defintions的區(qū)域。這個(gè)區(qū)域里的配置用戶設(shè)置每個(gè)PHP-FPM進(jìn)程池。PHP-FPM進(jìn)程池中是一系列相關(guān)的PHP子進(jìn)程。

通常一個(gè)PHP應(yīng)用有自己一個(gè)進(jìn)程池

Centos在PHP-FPM主配置文件的頂部引入進(jìn)程池定義文件:include=/etc/php7/php-fpm.d/*.conf

www.conf 是PHP-FPM進(jìn)程池的默認(rèn)配置文件。user= nobody

#擁有這個(gè) PHP-FPM進(jìn)程池中子進(jìn)程的系統(tǒng)用戶。要把這個(gè)設(shè)置的值設(shè)用的非根用戶的用戶名。

group = nobody

#擁有這個(gè) PHP-FPM進(jìn)程池中子進(jìn)程的系統(tǒng)用戶組。要把這個(gè)設(shè)置的值設(shè)應(yīng)用的非根用戶所屬的用戶組名。

listen=[::]]:9000

#PHP-FPM進(jìn)程池監(jiān)聽的IP地址和端口號(hào),讓 PHP-FPM 只接受 nginx從這里傳入的請(qǐng)求。

listen. allowed clients =127.0.0.1

#可以向這個(gè) PHP-FPM進(jìn)程池發(fā)送請(qǐng)求的IP地址(一個(gè)或多個(gè))。

pm.max children =51

#這個(gè)設(shè)置設(shè)定任何時(shí)間點(diǎn) PHP-FPM進(jìn)程池中最多能有多少個(gè)進(jìn)程。這個(gè)設(shè)置沒有絕對(duì)正確的值,你應(yīng)該測(cè)試你的PHP應(yīng)用,確定每個(gè)PHP進(jìn)程需要使用多少內(nèi)存,然后把這個(gè)設(shè)置設(shè)為設(shè)備可用內(nèi)存能容納的PHP進(jìn)程總數(shù)。對(duì)大多數(shù)中小型PHP應(yīng)用來說,每個(gè)PHP進(jìn)程要使用5~15MB內(nèi)存(具體用量可能有差異)。 假設(shè)我們使用設(shè)備為這個(gè)PHP-FPM進(jìn)程池分配了512MB可用內(nèi)存,那么可以把這個(gè)設(shè)置設(shè)為(512MB總內(nèi)存)/(每個(gè)進(jìn)程使用10MB) = 51個(gè)進(jìn)程。

...

編輯保存,重啟PHP-FPM主進(jìn)程:sudo systemctl restart php-fpm.service

PHP-FPM進(jìn)程池的配置詳情參見 http://php.net/manual/install.fpm.configuration.php

參考Company開發(fā)環(huán)境

測(cè)試環(huán)境的配置如下:[www]

user = nobody #進(jìn)程的發(fā)起用戶和用戶組,用戶user是必須設(shè)置,group不是 nobody 任意用戶

group = nobody

listen = [::]:9000 #監(jiān)聽ip和端口,[::] 代表任意ip

chdir = /app #在程序啟動(dòng)時(shí)將會(huì)改變到指定的位置(這個(gè)是相對(duì)路徑,相對(duì)當(dāng)前路徑或chroot后的“/”目錄)

pm = dynamic #選擇進(jìn)程池管理器如何控制子進(jìn)程的數(shù)量 #static: 對(duì)于子進(jìn)程的開啟數(shù)路給定一個(gè)鎖定的值(pm.max_children) #dynamic: 子進(jìn)程的數(shù)目為動(dòng)態(tài)的,它的數(shù)目基于下面的指令的值(以下為dynamic適用參數(shù))

pm.max_children = 16 #同一時(shí)刻能夠存貨的最大子進(jìn)程的數(shù)量

pm.start_servers = 4 #在啟動(dòng)時(shí)啟動(dòng)的子進(jìn)程數(shù)量

pm.min_spare_servers = 2 #處于空閑"idle"狀態(tài)的最小子進(jìn)程,如果空閑進(jìn)程數(shù)量小于這個(gè)值,那么相應(yīng)的子進(jìn)程會(huì)被創(chuàng)建

pm.max_spare_servers = 16 #最大空閑子進(jìn)程數(shù)量,空閑子進(jìn)程數(shù)量超過這個(gè)值,那么相應(yīng)的子進(jìn)程會(huì)被殺掉。

catch_workers_output = Yes #將worker的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出重定向到主要的錯(cuò)誤日志記錄中,如果沒有設(shè)置,根據(jù)FastCGI的指定,將會(huì)被重定向到/dev/null上

生產(chǎn)環(huán)境配置:

轉(zhuǎn)發(fā)請(qǐng)求給PHP-FPM

nginx為例:server {

listen 83;

server_name mobile.com;

root /app/mobile/web/;

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

location / {

index index.html index.htm index.php;

# Redirect everything that isn't a real file to index.php

try_files $uri $uri/ /index.php$is_args$args;

}

#把HTTP請(qǐng)求轉(zhuǎn)發(fā)給PHP-FPM進(jìn)程池處理

location ~ .*\.php include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_pass 192.168.33.30:9000; #監(jiān)聽9000端口

fastcgi_index index.php;

try_files $uri =404;

#include fastcgi.conf;

}

location ~ /\.(ht|svn|git) {

deny all;

}

access_log /app/wwwlogs/access.log;

error_log /app/wwwlogs/error.log;

}

php-fpm啟動(dòng),重啟,終止操作

啟動(dòng)php-fpm:/usr/sbin/php-fpm

/usr/local/php/sbin/php-fpm

php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,所以不要再看這種老掉牙的命令了,需要使用信號(hào)控制:

master進(jìn)程可以理解以下信號(hào)INT, TERM 立刻終止

QUIT 平滑終止

USR1 重新打開日志文件

USR2 平滑重載所有worker進(jìn)程并重新載入配置和二進(jìn)制模塊

一個(gè)簡單直接的重啟方法:

先查看php-fpm的master進(jìn)程號(hào)# ps aux|grep php-fpm

root 21891 0.0 0.0 112660 960 pts/3 R+ 16:18 0:00 grep --color=auto php-fpm

root 42891 0.0 0.1 182796 1220 ? Ss 4月18 0:19 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

nobody 42892 0.0 0.6 183000 6516 ? S 4月18 0:07 php-fpm: pool www

nobody 42893 0.0 0.6 183000 6508 ? S 4月18 0:17 php-fpm: pool www

重啟php-fpm:kill -USR2 42891

上面方案一般是沒有生成php-fpm.pid文件時(shí)使用,如果要生成php-fpm.pid,使用下面這種方案:

上面master進(jìn)程可以看到,matster使用的是/usr/local/php/etc/php-fpm.conf這個(gè)配置文件,cat /usr/local/php/etc/php-fpm.conf 發(fā)現(xiàn):[global]

; Pid file

; Note: the default prefix is /usr/local/php/var

; Default Value: none

;pid = run/php-fpm.pid

pid文件路徑應(yīng)該位于/usr/local/php/var/run/php-fpm.pid,由于注釋掉,所以沒有生成,我們把注釋去除,再kill -USR2 42891 重啟php-fpm,便會(huì)生成pid文件,下次就可以使用以下命令重啟,關(guān)閉php-fpm了:php-fpm 關(guān)閉:

kill -INT 'cat /usr/local/php/var/run/php-fpm.pid'

php-fpm 重啟:

kill -USR2 'cat /usr/local/php/var/run/php-fpm.pid'

總結(jié)

以上是生活随笔為你收集整理的php中的fpm_详解PHP中PHP-FPM是什么?有什么用?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 夜夜撸小说 | av毛片在线免费观看 | 手机福利视频 | 色综合激情 | 大乳女喂男人吃奶视频 | eeuss一区二区 | 国产av无码专区亚洲精品 | 色婷婷av国产精品 | 2023毛片 | 在线观看岛国av | 香蕉网站在线观看 | 欧美裸体精品 | 午夜福利毛片 | 99国产精品无码 | 国产精品18久久久久久久久 | 成人91免费 | 免费看国产曰批40分钟粉红裤头 | 亚洲av永久中文无码精品综合 | av片免费| 日韩图片区| va在线观看| 天天草av| 成年人免费网站 | 午夜精品久久久久久久99热浪潮 | 久久视频国产 | 少妇特黄a一区二区三区88av | 亚洲www色 | 亚洲成人av免费在线观看 | 欧美少妇喷水 | 久久久久久久国产视频 | 婷婷久| 1024久久| 自拍偷拍21p| 久久av红桃一区二区小说 | 亚洲综合免费 | 杂技xxx裸体xxxx欧美 | 超污网站在线观看 | 午夜欧美在线 | 亚洲人在线播放 | 91视频成人免费 | 天堂网在线观看 | 都市激情av | 久久夜夜夜 | 人妻少妇一区 | 亚洲精品一区二区三区中文字幕 | 波多野结衣视频在线播放 | 国产精品久久久久久久久借妻 | 男女考妣视频 | 日本三级视频在线 | 国产三级福利 | 成人在线高清视频 | 超碰国产在线 | 女人张开腿让男人插 | 少妇视频在线观看 | 大度亲吻原声视频在线观看 | 三级伦理片 | 亚洲91在线 | 椎名由奈在线观看 | 好姑娘在线观看高清完整版电影 | 91成人免费电影 | 91在线精品李宗瑞 | 中文字字幕第183页 欧美特级一级片 | 美女让男人捅 | 美美女高清毛片视频免费观看 | 亚洲制服丝袜一区 | 青青伊人av| 东京av在线| www午夜视频 | 日韩在线影视 | 欧美一区二区三区爽爽爽 | 男男啪啪无遮挡 | 欧美黄视频| 超色视频 | 色妻av | 欧美乱轮 | 亚洲黄色成人网 | 久久66热这里只有精品 | 国产精品久久麻豆 | 国产精品嫩| 久久久久久av无码免费看大片 | 日日碰狠狠添天天爽无码av | 欧美日本韩国一区二区三区 | 亚洲午夜18毛片在线看 | 国产经典毛片 | 国产成人精品一区二区三区四区 | 中文久久久 | 人人爽人人澡 | 日本五十熟hd丰满 | 国产99视频在线 | 深爱开心激情网 | 岛国精品在线 | 亚洲宅男天堂 | 四虎影视免费看 | 黄色一级片 | 国产毛片毛片毛片毛片毛片毛片 | 国产精品高清在线 | 看一级黄色片 | 欧美一级二级三级视频 | av日韩一区二区 |