#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fpm
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/usr/sbin/php-fpm
php_fpm_CONF=/etc/php/php-fpm.conf
php_fpm_PID=/var/run/php-fpm.pid
tmp_pid=/var/run/php-fpm.tmp.pid
php_opts="--fpm-config $php_fpm_CONF --pid $tmp_pid"
wait_for_pid () {
local pid=$1
while kill -0 $pid >/dev/null 2>&1 ; do
sleep 1;
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
$php_fpm_BIN --daemonize $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
cat $tmp_pid >$php_fpm_PID
echo " done"
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
pid=$(cat $php_fpm_PID)
kill -QUIT $pid
wait_for_pid $pid
echo " done"
;;
status)
if [ ! -r $php_fpm_PID ] ; then
echo "php-fpm is stopped"
exit 0
fi
PID=`cat $php_fpm_PID`
if ps -p $PID | grep -q $PID; then
echo "php-fpm (pid $PID) is running..."
else
echo "php-fpm dead but pid file exists"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
pid=$(cat $php_fpm_PID)
kill -TERM $pid
wait_for_pid $pid
echo " done"
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
pid=$(cat $php_fpm_PID)
error=$($0 start >/dev/null)
[[ "$error" != "" ]] && echo $error && exit 1
kill -QUIT $pid
# 这里等待该pid似乎也不太好
echo " done"
;;
configtest)
$php_fpm_BIN -t
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}"
exit 1
;;
esac