PHP是世界上最好的語言,但需要PHP解析器
Apache下通過mod_php.so和php相連,
如果使用nginx,碰到php 需要轉(zhuǎn)發(fā)給 cgi程序
關(guān)于FastCGI:
全稱 FastCGI Process Manager,是php-cgi的升級版,市面上有很多進程管理器,PHP-FPM就是其中一種。
PHP-FPM作為進程管理器,會監(jiān)聽端口,默認為9000,并且監(jiān)聽本機,只接收127.0.0.1
linux下通過 netstat -nlpt|grep php-fpm 查看
PHP-CGI 是PHP自帶的解釋器,缺點:
- php-cgi更改
php.ini配置后需重啟php-cgi才能讓新的php-ini生效,不可以平滑重啟 - 直接殺死php-cgi進程,php就不能運行了。(PHP-FPM和Spawn-FCGI就沒有這個問題,守護進程會平滑從新生成新的子進程)
本篇只講windows(64位)下,采用nginx,使用php-cgi解析
默認情況下,當(dāng) php-cgi 處理php 達到500次,就自動關(guān)閉,即不能解析PHP(這你妹也太坑了吧!都PHP7了,這個問題 還存在)
采用xxfpm,管理FastCGI進程.下載地址:https://github.com/78/xxfpm,在此非常感謝這位大哥

安裝xxfpm管理器
首先安裝
xxfpm.exe-
如果出現(xiàn)報錯缺少pthreadgc2.dll,請看下面幾步
1. 下載里找到pthreadGC2.dll
2.
3. 將這個文件復(fù)制到C:/Windows/SysWOW64目錄(如果系統(tǒng)是32位的,將dll文件復(fù)制到C:\Windows\System32下);
4. 然后打開"開始-運行-輸入regsvr32 pthreadgc2.dll,回車,如果報錯,用下面的方法。
5. 新建一個文件registe.bat,和pthreadgc2.dll同目錄@echo 開始注冊 copy pthreadgc2.dll %windir%\SysWOW64\ regsvr32 %windir%\SysWOW64\pthreadgc2.dll /s @echo pthreadgc2.dll注冊成功 @pause6.運行
registe.bat,便會完成pthreadgc2.dll注冊(如果32位的系統(tǒng),請將system32替換為system32)。完了就可以將這個文件刪了(不是刪除windows目錄下哈) -
將下載的
xxfpm.execopy 到nginx目錄下,
4.需要下載 RunHiddenConsole.exe,地址 鏈接:https://pan.baidu.com/s/1o94QWdW 密碼:rcbj

5.新建start_nginx.bat
@echo off
REM Windows 下無效
REM set PHP_FCGI_CHILDREN=5
REM 每個進程處理的最大請求數(shù),或設(shè)置為 Windows 環(huán)境變量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole C:/wnmp/nginx/xxfpm/xxfpm.exe "C:/wnmp/php/php-cgi.exe -c C:/wnmp/php/php.ini" -n 5 -i 127.0.0.1 -p 9000
echo Starting nginx...
RunHiddenConsole C:/wnmp/nginx/nginx.exe -p C:/wnmp/nginx
exit
6.新建stop_nginx.bat
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM xxfpm.exe > nul
exit
7.現(xiàn)在運行 start_nginx.bat,等于同時開啟5個php-cgi進程,因為我們傳了參數(shù) -n 為5
8.如果我們手動斷掉一個,會發(fā)現(xiàn)又多出來一個,還是5個。
這是因為xxfpm會管理php-cgi,將其維持在5個php-cgi進程,防止cgi進程崩潰關(guān)閉。
還有一點注意,監(jiān)聽端口注意與nginx的配置文件相同。

有錯誤不足地方,希望大家批評指出??!
All down ,Enjoy Your Coding

