#!/sbin/openrc-run extra_started_commands="reload" extra_commands="configtest" set_phpvars() { PHPSLOT="${SVCNAME#php-fpm-}" PHP_FPM_PID="/run/php-fpm-${PHPSLOT}.pid" if [ "${PHPSLOT}" = "php-fpm" ] ; then PHPSLOT="$(eselect php show fpm)" PHP_FPM_PID="/run/php-fpm.pid" fi PHP_FPM_CONF="/etc/php/fpm-${PHPSLOT}/php-fpm.conf" PHP_FPM_BIN="/usr/lib/${PHPSLOT}/bin/php-fpm" } start() { # If configtest fails, we don't have to sit around for five # seconds waiting for a pid to show up. configtest || return $? ebegin "Starting PHP FastCGI Process Manager" set_phpvars start-stop-daemon --start --pidfile "${PHP_FPM_PID}" \ --exec "${PHP_FPM_BIN}" \ -- \ --fpm-config "${PHP_FPM_CONF}" \ --pid "${PHP_FPM_PID}" local i=0 local timeout=5 while [ ! -f "${PHP_FPM_PID}" ] && [ $i -le $timeout ]; do sleep 1 i=$(($i + 1)) done [ $timeout -gt $i ] eend $? } stop() { ebegin "Stopping PHP FastCGI Process Manager" set_phpvars start-stop-daemon --signal QUIT \ --stop \ --exec "${PHP_FPM_BIN}" \ --pidfile "${PHP_FPM_PID}" eend $? } reload() { configtest || return $? ebegin "Reloading PHP FastCGI Process Manager" set_phpvars [ -f "${PHP_FPM_PID}" ] && kill -USR2 $(cat "${PHP_FPM_PID}") eend $? } configtest() { ebegin "Testing PHP FastCGI Process Manager configuration" set_phpvars # Hide the "test is successful" message (which goes to stderr) if # the test passed, but show the entire output if the test failed # because it may contain hints about the problem. OUTPUT=$( "${PHP_FPM_BIN}" --fpm-config "${PHP_FPM_CONF}" --test 2>&1 ) # Save this so `echo` doesn't clobber it. local exit_code=$? [ $exit_code -ne 0 ] && echo "${OUTPUT}" >&2 eend $exit_code }