PluginProbe
UpStream: a Project Management Plugin for WordPress / trunk
UpStream: a Project Management Plugin for WordPress vtrunk
trunk 1.39.0 1.39.1 1.39.2 1.39.3 2.0.7 2.1.0
upstream / vendor / symfony / process / Tests / NonStopableProcess.php

NonStopableProcess.php in UpStream: a Project Management Plugin for WordPress trunk, at vendor/symfony/process/Tests/NonStopableProcess.php

48 lines 1.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 /**
13 * Runs a PHP script that can be stopped only with a SIGKILL (9) signal for 3 seconds.
14 *
15 * @args duration Run this script with a custom duration
16 *
17 * @example `php NonStopableProcess.php 42` will run the script for 42 seconds
18 */
19 function handleSignal($signal)
20 {
21 switch ($signal) {
22 case \SIGTERM:
23 $name = 'SIGTERM';
24 break;
25 case \SIGINT:
26 $name = 'SIGINT';
27 break;
28 default:
29 $name = $signal.' (unknown)';
30 break;
31 }
32
33 echo "signal $name\n";
34 }
35
36 pcntl_signal(\SIGTERM, 'handleSignal');
37 pcntl_signal(\SIGINT, 'handleSignal');
38
39 echo 'received ';
40
41 $duration = isset($argv[1]) ? (int) $argv[1] : 3;
42 $start = microtime(true);
43
44 while ($duration > (microtime(true) - $start)) {
45 usleep(10000);
46 pcntl_signal_dispatch();
47 }
48