#! /bin/sh

### BEGIN INIT INFO
# Provides:          oh-phpfpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts on-phpfpm
# Description:       starts the onapp hosters PHP FastCGI Process Manager daemon
### END INIT INFO

prefix=/usr/local/onapp/hosters/php
exec_prefix=${prefix}

php_fpm_BIN="${exec_prefix}/bin/php-fpm -R"
php_fpm_CONF=${prefix}/fpm/php-fpm.conf
php_fpm_PID=${prefix}/fpm/pid/php-fpm.pid

php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"


wait_for_pid () {
    try=0

    while test $try -lt 35 ; do

        case "$1" in
            'created')
            if [ -f "$2" ] ; then
                try=''
                break
            fi
            ;;

            'removed')
            if [ ! -f "$2" ] ; then
                try=''
                break
            fi
            ;;
        esac

        echo -n .
        try=`expr $try + 1`
        sleep 1

    done

}

case "$1" in
    start)
        echo -n "Starting oh-phpfpm "

        $php_fpm_BIN --daemonize $php_opts

        if [ "$?" != 0 ] ; then
            echo " failed"
            exit 1
        fi

        wait_for_pid created $php_fpm_PID

        if [ -n "$try" ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;

    stop)
        echo -n "Gracefully shutting down oh-phpfpm "

        if [ ! -r $php_fpm_PID ] ; then
            echo "warning, no pid file found - oh-phpfpm is not running ? "
            exit 1
        fi

        kill -QUIT `cat $php_fpm_PID`

        wait_for_pid removed $php_fpm_PID

        if [ -n "$try" ] ; then
            echo " failed. Use force-quit"
            exit 1
        else
            echo " done"
        fi
    ;;

    force-quit)
        echo -n "Terminating oh-phpfpm "

        if [ ! -r $php_fpm_PID ] ; then
            echo "warning, no pid file found - oh-phpfpm is not running ? "
            exit 1
        fi

        kill -TERM `cat $php_fpm_PID`

        wait_for_pid removed $php_fpm_PID

        if [ -n "$try" ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;

    restart)
        $0 stop
        $0 start
    ;;

    reload)

        echo -n "Reload service oh-phpfpm "

        if [ ! -r $php_fpm_PID ] ; then
            echo "warning, no pid file found - oh-phpfpm is not running ? "
            exit 1
        fi

        kill -USR2 `cat $php_fpm_PID`

        echo " done"
    ;;

    *)
        echo "Usage: $0 {start|stop|force-quit|restart|reload} "
        exit 1
    ;;

esac
