近日测试一个东西需要,将原先的 php 进行了升级,从 5.2 升级到了 5.6,从PHP 5.4 RC2开始,php-fpm已经转正了,不再被php团队标注为EXPERIMENTAL(实验性的) 。为了方便自己写了个服务启动脚本。
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)对于PHP 5.3.3之前的php来说,是一个补丁包 ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装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。
#!/bin/bash
#Startup script for the PHP-FPM service.
# chkconfig: – 85 20
# description: PHP-FPM is fast-cgi ctrl programme
#
phpfpm=/usr/local/php/sbin/php-fpm
phpfpm_config=/usr/local/php/etc/php-fpm.conf
phpfpm_pid=/usr/local/php/var/run/php-fpm.pid
php_config=/usr/local/php/etc/php.ini
RETYAL=0
prog="php-fpm"
. /etc/rc.d/init.d/functions
#Source network configuration.
. /etc/sysconfig/network
#Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $phpfpm ] || exit 0
start() {
[ -x $phpfpm ] || \
{ echo "FATAL: No such programme";exit 4; }
[ -f $phpfpm_config ] || \
{ echo "FATAL: Config file does not exist";exit 6; }
if [ -e $phpfpm_pid ];then
echo -n $"$prog already running...."
exit 1
fi
echo -n $"Starting $prog services:"
daemon $phpfpm -c $php_config -y ${phpfpm_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/php-fpm
return $RETVAL
}
stop() {
echo -n $"Stoping $prog services:"
killproc $phpfpm
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/php-fpm $phpfpm_pid
}
configtest() {
echo -n $"Test $phpfpm_config file:"
$phpfpm -c ${php_config} -y ${phpfpm_config} -t
RETVAL=$?
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
configtest)
configtest
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage:$prog{start|stop|restart|configtest|status|help}"
exit 1
esac
exit $RETVAL