婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Shell腳本實現啟動PHP內置FastCGI Server

Shell腳本實現啟動PHP內置FastCGI Server

熱門標簽:衛星地圖標注地名 曲阜400電話辦理 申請公司400電話要注意什么 地圖標注輻射圖案 寧波智能外呼系統公司 電銷機器人 劍魚 聯通電話機器人怎么接 奧維互動地圖標注參數 安裝外呼系統費用

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

對于 PHP 來說,php-fpm 還是最合適的,spawn-fcgi 這類東西就不用考慮了,我寧愿用 PHP5 內置的 FastCGI Server。

通過下面的命令啟動服務器,監聽 9000 端口:

復制代碼 代碼如下:

php-cgi -q -b 127.0.0.1:9000

好了,配合 nginx,可以繼續開始工作了,但是你會發現每隔一段時間就會出現 502 Bad Gateway 錯誤,因為 php-cgi 進程處理的請求數達到最大(默認500)自動退出了。

你需要設置兩個環境變量:

PHP_FCGI_CHILDREN – 派生子進程的數量
PHP_FCGI_MAX_REQUESTS – 每個子進程所能處理的最大請求數

配合這兩個環境變量,啟動內置的 FastCGI Server,保證 PHP 能夠派生出子進程來負責處理請求,而不是由主進程來做。否則就會出現上面說的情況,達到 500 以后,自動退出。

下面是一個簡單的腳本:

復制代碼 代碼如下:

#!/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"
 
## 派生出多少個 PHP 子進程
## 其中不包括主進程
PHP_FCGI_CHILDREN=16
 
## 每個 PHP 進程處理的最大請求數
PHP_FCGI_MAX_REQUESTS=4096
 
## 用戶
USERID=verdana
 
################## no config below this line
 
# 根據用戶不同,切換啟動命令
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
 
# 相關的環境變量
E="PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS"
 
# 忽略其他的環境變量,以一個干凈的環境啟動
nohup env - $E sh -c "$CMD" > /dev/null
 
# 記錄 PHP 主進程的 PID
# $! 返回的是 sh 的 PID
# 找到所有 php-cgi 進程中最小的 PID,就是主進程的 PID
MASTER_PID=`ps -e | grep 'php-cgi' | sed -n '1p' | awk '{print $1}'`
echo $MASTER_PID > "$PHP_PID"

如何關閉呢?
可以一次性殺滅所有的 php-cgi 進程:

復制代碼 代碼如下:

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

只弄死主進程也可以達到相同的效果,所有子進程也會隨之消失:
復制代碼 代碼如下:

cat /tmp/php.pid | xargs kill

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

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

巨人網絡通訊聲明:本文標題《Shell腳本實現啟動PHP內置FastCGI Server》,本文關鍵詞  Shell,腳本,實現,啟動,PHP,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell腳本實現啟動PHP內置FastCGI Server》相關的同類信息!
  • 本頁收集關于Shell腳本實現啟動PHP內置FastCGI Server的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 满城县| 彩票| 孙吴县| 老河口市| 徐水县| 林西县| 浦北县| 沙坪坝区| 财经| 准格尔旗| 济宁市| 镇宁| 岳普湖县| 涞水县| 开阳县| 安龙县| 天台县| 阿坝| 霞浦县| 礼泉县| 普兰县| 武隆县| 丁青县| 隆尧县| 越西县| 公主岭市| 巴塘县| 南安市| 丽水市| 镇赉县| 呼伦贝尔市| 龙海市| 南昌县| 定远县| 临海市| 和静县| 临湘市| 海盐县| 隆昌县| 逊克县| 新兴县|