Shell 스 크 립 트 는 PHP 내 장 된 FastCGI 서버 를 시작 합 니 다.

며칠 전에 작업 플랫폼 을 Ubuntu 9.10 Karmic 에서 10.04 Lucid 로 업 데 이 트 했 습 니 다.Lucid 공식 소스 가 PHP 5.3.2 를 가 져 왔 기 때문에 예전 에 사 용 했 던dotdeb소스 를 사용 할 수 없 었 습 니 다.이 소스 를 좋아 했 습 니 다.PHP 5.3 뿐만 아니 라 phop 5-fpm 라 실 용적 인 fcgi 프로 세 스 관리자 도 있 습 니 다.이것 은 공식 소스 에 없습니다.dotdeb 를 강행 하 는 것 도 괜 찮 지만 가방 에 의존 하 는 문제 가 많 을 수 밖 에 없다.이런 의존 관 계 를 처리 하 는 것 은 매우 번 거 로 운 일이 다.형 은 아무것도 안 무서워.귀 찮 을 까 봐~!:
PHP 에 있어 서php-fpm가 가장 적합 하 다.spawn-fcgi이런 것 은 고려 할 필요 가 없다.나 는 차라리 PHP 5 에 내 장 된 FastCGI Server 를 사용 하 겠 다.
다음 명령 을 통 해 서버 를 시작 하고 9000 포트 를 감청 합 니 다.

php-cgi -q -b 127.0.0.1:9000 &
자,nginx 에 맞 춰 작업 을 계속 시작 할 수 있 습 니 다.하지만 일정 시간 마다 502 Bad Gateway 오류 가 발생 합 니 다.pp-cgi 프로 세 스 처리 요청 수가 최대(기본 500)에 이 르 러 자동 으로 종료 되 었 기 때 문 입 니 다.
환경 변 수 를 두 개 설정 해 야 합 니 다.
PHP_FCGI_CHIldren C 파 출산 프로 세 스 의 수
PHP_FCGI_MAX_REQUESTS C 하위 프로 세 스 마다 처리 할 수 있 는 최대 요청 수
이 두 환경 변수 에 맞 춰 내 장 된 FastCGI Server 를 시작 하여 주 프로 세 스 가 아 닌 하위 프로 세 스 를 파생 시 켜 요청 을 처리 할 수 있 도록 합 니 다.그렇지 않 으 면 위 에서 말 한 상황 이 발생 해 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

좋은 웹페이지 즐겨찾기