校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > Shell腳本實(shí)現(xiàn)啟動(dòng)PHP內(nèi)置FastCGI Server

Shell腳本實(shí)現(xiàn)啟動(dòng)PHP內(nèi)置FastCGI Server

熱門標(biāo)簽:衛(wèi)星地圖標(biāo)注地名 曲阜400電話辦理 申請(qǐng)公司400電話要注意什么 地圖標(biāo)注輻射圖案 寧波智能外呼系統(tǒng)公司 電銷機(jī)器人 劍魚(yú) 聯(lián)通電話機(jī)器人怎么接 奧維互動(dòng)地圖標(biāo)注參數(shù) 安裝外呼系統(tǒng)費(fèi)用

前幾天把工作平臺(tái)從 Ubuntu 9.10 Karmic 更新到了 10.04 Lucid,由于 Lucid 官方源自帶了 PHP5.3.2,以前使用的 dotdeb 的源就沒(méi)法用了,一直很喜歡這個(gè)源的,不但提供了 PHP5.3 而且還有 php5-fpm 這個(gè)很實(shí)用的 fcgi 進(jìn)程管理器,這個(gè)在官方源里面是沒(méi)有的。強(qiáng)行上了 dotdeb 雖然也可以,不過(guò)必然有很多包會(huì)出現(xiàn)依賴問(wèn)題,處理這些依賴關(guān)系是件很煩心的事情。哥啥都不怕,就怕麻煩~ :!:

對(duì)于 PHP 來(lái)說(shuō),php-fpm 還是最合適的,spawn-fcgi 這類東西就不用考慮了,我寧愿用 PHP5 內(nèi)置的 FastCGI Server。

通過(guò)下面的命令啟動(dòng)服務(wù)器,監(jiān)聽(tīng) 9000 端口:

復(fù)制代碼 代碼如下:

php-cgi -q -b 127.0.0.1:9000

好了,配合 nginx,可以繼續(xù)開(kāi)始工作了,但是你會(huì)發(fā)現(xiàn)每隔一段時(shí)間就會(huì)出現(xiàn) 502 Bad Gateway 錯(cuò)誤,因?yàn)?php-cgi 進(jìn)程處理的請(qǐng)求數(shù)達(dá)到最大(默認(rèn)500)自動(dòng)退出了。

你需要設(shè)置兩個(gè)環(huán)境變量:

PHP_FCGI_CHILDREN – 派生子進(jìn)程的數(shù)量
PHP_FCGI_MAX_REQUESTS – 每個(gè)子進(jìn)程所能處理的最大請(qǐng)求數(shù)

配合這兩個(gè)環(huán)境變量,啟動(dòng)內(nèi)置的 FastCGI Server,保證 PHP 能夠派生出子進(jìn)程來(lái)負(fù)責(zé)處理請(qǐng)求,而不是由主進(jìn)程來(lái)做。否則就會(huì)出現(xiàn)上面說(shuō)的情況,達(dá)到 500 以后,自動(dòng)退出。

下面是一個(gè)簡(jiǎn)單的腳本:

復(fù)制代碼 代碼如下:

#!/bin/bash
 
## 參考:
##
##   http://php.net/manual/en/install.unix.lighttpd-14.php
##   http://kovyrin.net/2006/05/30/nginx-php-fastcgi-howto
##
 
## php-cgi 的文件路徑
PHPFCGI=`which php-cgi`
 
## PID 文件路徑
PHP_PID="/tmp/php.pid"
 
## 綁定 TCP 地址
FCGI_BIND_ADDRESS="127.0.0.1:9000"
 
## 綁定到 Unix domain socket
#FCGI_BIND_ADDRESS="/tmp/php.sock"
 
## 派生出多少個(gè) PHP 子進(jìn)程
## 其中不包括主進(jìn)程
PHP_FCGI_CHILDREN=16
 
## 每個(gè) PHP 進(jìn)程處理的最大請(qǐng)求數(shù)
PHP_FCGI_MAX_REQUESTS=4096
 
## 用戶
USERID=verdana
 
################## no config below this line
 
# 根據(jù)用戶不同,切換啟動(dòng)命令
if test x$UID = x0; then
  CMD="/bin/su -m -c \"$PHPFCGI -q -b $FCGI_BIND_ADDRESS\" $USERID"
else
  CMD="$PHPFCGI -b $FCGI_BIND_ADDRESS"
fi
 
echo $CMD
 
# 相關(guān)的環(huán)境變量
E="PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS"
 
# 忽略其他的環(huán)境變量,以一個(gè)干凈的環(huán)境啟動(dòng)
nohup env - $E sh -c "$CMD" > /dev/null
 
# 記錄 PHP 主進(jìn)程的 PID
# $! 返回的是 sh 的 PID
# 找到所有 php-cgi 進(jìn)程中最小的 PID,就是主進(jìn)程的 PID
MASTER_PID=`ps -e | grep 'php-cgi' | sed -n '1p' | awk '{print $1}'`
echo $MASTER_PID > "$PHP_PID"

如何關(guān)閉呢?
可以一次性殺滅所有的 php-cgi 進(jìn)程:

復(fù)制代碼 代碼如下:

ps -e | grep php-cgi | awk '{print $1}' | xargs kill

只弄死主進(jìn)程也可以達(dá)到相同的效果,所有子進(jìn)程也會(huì)隨之消失:
復(fù)制代碼 代碼如下:

cat /tmp/php.pid | xargs kill

您可能感興趣的文章:
  • PHP+shell實(shí)現(xiàn)多線程的方法
  • php-fpm開(kāi)機(jī)自動(dòng)啟動(dòng)Shell腳本
  • Shell、Perl、Python、PHP訪問(wèn) MySQL 數(shù)據(jù)庫(kù)代碼實(shí)例
  • Shell腳本中實(shí)現(xiàn)更新PHP5
  • PHP和Shell實(shí)現(xiàn)檢查SAMBA與NFS Server是否存在
  • Ruby、PHP、Shell實(shí)現(xiàn)求50以內(nèi)的素?cái)?shù)
  • shell腳本聯(lián)合PHP腳本采集網(wǎng)站的pv和alexa排名
  • php管理nginx虛擬主機(jī)shell腳本實(shí)例
  • 監(jiān)控服務(wù)器swap并重啟php的Shell腳本
  • PHP+shell腳本操作Memcached和Apache Status的實(shí)例分享

標(biāo)簽:安康 三門峽 仙桃 上饒 遵義 江西 大興安嶺 大慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell腳本實(shí)現(xiàn)啟動(dòng)PHP內(nèi)置FastCGI Server》,本文關(guān)鍵詞  Shell,腳本,實(shí)現(xiàn),啟動(dòng),PHP,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell腳本實(shí)現(xiàn)啟動(dòng)PHP內(nèi)置FastCGI Server》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Shell腳本實(shí)現(xiàn)啟動(dòng)PHP內(nèi)置FastCGI Server的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 景宁| 腾冲县| 株洲县| 广德县| 正定县| 平安县| 莱西市| 乌拉特后旗| 柯坪县| 五原县| 宜川县| 中西区| 栾城县| 辽阳市| 拉孜县| 罗山县| 睢宁县| 尉犁县| 汶川县| 长治市| 兴山县| 石河子市| 镇雄县| 富裕县| 茶陵县| 正宁县| 文昌市| 滦南县| 浮山县| 卓资县| 彰化县| 宜春市| 凤凰县| 苍梧县| 定南县| 洛浦县| 凤凰县| 新巴尔虎左旗| 江安县| 深州市| 新蔡县|