scratch – Blame information for rev
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
115 | office | 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 | } |