* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Runs a PHP script that can be stopped only with a SIGKILL (9) signal for 3 seconds. * * @args duration Run this script with a custom duration * * @example `php NonStopableProcess.php 42` will run the script for 42 seconds */ function handleSignal($signal) { $name = match ($signal) { \SIGTERM => 'SIGTERM', \SIGINT => 'SIGINT', default => $signal.' (unknown)', }; echo "signal $name\n"; } pcntl_signal(\SIGTERM, 'handleSignal'); pcntl_signal(\SIGINT, 'handleSignal'); echo 'received '; $duration = isset($argv[1]) ? (int) $argv[1] : 3; $start = microtime(true); while ($duration > (microtime(true) - $start)) { usleep(10000); pcntl_signal_dispatch(); }