1234567891011121314151617181920212223242526272829303132333435363738394041 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * 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();
- }
|