| #!/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 |
| } |