本文目錄一覽:
- 1、PHP-Fcgi下PHP的執行時間設置方法
- 2、使用spawn-fcgi,怎麼增加php的進程數量
- 3、php5.4.6 (fpm-fcgi)指的什麼意思?偶是菜鳥~求指點
- 4、什麼是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI
- 5、php-fcgi.sock怎麼增加
PHP-Fcgi下PHP的執行時間設置方法
昨天,一個程序需要導出500條數據,結果發現到150條是,Nginx報出504
Gateway
Timeout錯誤,原來PHP-Fcgi下的設置執行時間與isapi的不同
一般情況下設置PHP腳本執行超時的時間
一、在php.ini裡面設置
max_execution_time
=
1800;
二、通過PHP的ini_set
函數設置
ini_set(“max_execution_time”,
“1800”);
三、通過set_time_limit
函數設置
set_time_limit(1800);
PHP-Fcgi下PHP的執行時間設置方法
昨天,一個程序需要導出500條數據,結果發現到150條是,Nginx報出504
Gateway
Timeout錯誤
經觀察,發現大約30秒時超時,php.ini中執行時間配置已經是300秒:
複製代碼
代碼如下:
max_execution_time
=
300
再查nginx的相關配置,無果。
寫了一個php的測試頁再測
複製代碼
代碼如下:
echo
‘aaa’;
set_time_limit(0);
sleep(40);
echo
‘aa’;
依然超時,可以確定set_time_limit這個函數沒生效。
再查php-fcgi的配置php-fpm.conf,下邊這個設置疑似有問題
複製代碼
代碼如下:
VALUE
name=”request_terminate_timeout”30s/VALUE
查官方文檔:
複製代碼
代碼如下:
request_terminate_timeout
–
The
timeout
(in
seconds)
for
serving
a
single
request
after
which
the
worker
process
will
be
terminated.
Should
be
used
when
‘max_execution_time’
ini
option
does
not
stop
script
execution
for
some
reason.
Default:
“5s”.
Note:
‘0s’
means
‘off’
大意是php中set_time_limit設置的時間內如果php還沒執行完,則走此處的配置,也就是request_terminate_timeout=30秒。
先把這個參數改的和php中set_time_limit值一樣,都是300秒,還不行,不理解為什麼,如果高手知道請賜教。
最終把request_terminate_timeout關閉,程序可以正常執行了,問題解決
複製代碼
代碼如下:
VALUE
name=”request_terminate_timeout”0s/VALUE
補充:如果前端的nginx服務器使用了upstream負載均衡,那個負載均衡配置中以下幾個參數也需要相應修改
複製代碼
代碼如下:
proxy_connect_timeout
300s;
proxy_send_timeout
300s;
proxy_read_timeout
300s;
使用spawn-fcgi,怎麼增加php的進程數量
spawn-fcgi這個包原來是屬於Lighttpd里的,現在已經可以獨立出來使用。原先我看一些文檔,在VPS上配置nginx時使用spawn-fcgi包作為FastCGI支持模塊(當然還有其他的支持模塊,如php-fpm包),後來因為配置nginx時老出現502錯誤,就暫時使用apache了。把nginx自啟動關閉,把 apache啟動後,打開網頁發現速度比之前快了很多!我開始以為是網絡一時加速而已,後來過了幾天也發現很快。感覺快了最少兩倍以上。(沒有用工具嚴格測試過)後來一想,是apache的運行模式改用了FastCGI模式,速度成倍提高。剛才重新配置測試了一次,果然如此!
方法:系統平台是CentOS 5,前提是LAMP已配置好,運行正常。
1、32位:rpm -ivh entos.alt.ru/repository/centos/5/i386/spawn-fcgi-1.6.3-1.el5.i386.rpm
64位:rpm -ivh htttos.alt.ru/repository/centos/5/x86_64/spawn-fcgi-1.6.3-1.el5.x86_64.rpm
(也可以去官方下載源碼包編譯安裝:h)
2、使用spawn-fcgi來控制php-cgi的FastCGI進程:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u apache -g apache -f /usr/bin/php-cgi
參數含義如下:
-f fcgiapp 指定調用FastCGI的進程的執行程序位置,根據系統上所裝的PHP的情況具體設置。
-a addr 綁定到地址addr。
-p port 綁定到端口port。
-s path 綁定到unix socket的路徑path。
-C childs 指定產生的FastCGI的進程數,默認為5。(僅用於PHP)
-P path 指定產生的進程的PID文件路徑。
-u和-g FastCGI使用什麼身份(-u 用戶 -g 用戶組)運行,CentOS下可以使用apache用戶,其他的根據情況配置,如nobody、www-data等。
4. 將這行代碼加入到/etc/rc.local文件底部,這樣系統啟動的時候就可以同時啟動PHP的FastCGI進程。
php5.4.6 (fpm-fcgi)指的什麼意思?偶是菜鳥~求指點
就個人的使用體驗,如果你迷惑於PHP安裝版本的選擇,可以直接安裝PHP整合安裝包,比如:XAMPP/ WampServer.
以下是相關資料解釋:
PHP-FPM是一個PHP FastCGI管理器,是只用於PHP的,可以在 下載得到。
PHP-FPM其實是PHP源代碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP源代碼中,在編譯安裝PHP後才可以使用。
現在我們可以在最新的PHP 5.3.2的源碼樹里下載得到直接整合了PHP-FPM的分支,據說下個版本會融合進PHP的主分支去。相對Spawn-FCGI,PHP-FPM在CPU和內存方面的控制都更勝一籌,而且前者很容易崩潰,必須用crontab進行監控,而PHP-FPM則沒有這種煩惱。
PHP5.3.3已經集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置,比spawn-fcgi具有更多有點,所以被PHP官方收錄了。在./configure的時候帶 –enable-fpm參數即可開啟PHP-FPM。
什麼是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI
您好,很高興為您解答。
CGI(通用網關接口)
CGI全稱是“公共網關接口”(Common Gateway Interface),HTTP服務器與你的或其它機器上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上。 CGI可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環境變量。如php,perl,tcl等。
FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行着,只要激活後,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。它還支持分布式的運算, 即 FastCGI 程序可以在網站服務器以外的主機上執行並且接受來自其它網站服務器來的請求。
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中並因此獲得較高的性能。眾所周知,CGI解釋器的反覆加載是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。
PHP-CGI是PHP自帶的FastCGI管理器。
PHP-FPM是一個PHPFastCGI管理器,是只用於PHP的。
spawn-fcgi是一個通用的FastCGI管理服務器
她是lighttpd中的一部份,但目前已經單獨成為一個項目,最新的lighttpd沒有這一塊,但可以在以前版本中找到她,在lighttpd-1.4.15中就有
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
php-fcgi.sock怎麼增加
首先nignx與php-fpm的連接是通過php-fcgi.sock進行的,如果php-fcgi.sock出現問題將出現502BAD GATWAY問題,也就是無法連接通信。
php-fcgi.sock當php啟動時產生,關閉時清除。雖然在php啟動時給php-fcgi.sock 755權限,但是重啟php時還是會變成rw-rw–權限,並且user、group都是root。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/184024.html