Pull merge.
[yaffs-website] / vendor / symfony / process / Tests / NonStopableProcess.php
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 }