aboutsummaryrefslogtreecommitdiffstats
path: root/library/symfony/process/Tests/NonStopableProcess.php
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-05-10 12:12:20 +1000
committerredmatrix <git@macgirvin.com>2016-05-10 12:12:20 +1000
commitb7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4 (patch)
tree2e4f069d66885c5ca5b77154e9dd5a43ec004ff5 /library/symfony/process/Tests/NonStopableProcess.php
parentea1173f8f632151d02c71fe6004c6a64d014e80a (diff)
parent0b8a7f1bd03edb2bb18eb050fcb0b482d0e231be (diff)
downloadvolse-hubzilla-b7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4.tar.gz
volse-hubzilla-b7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4.tar.bz2
volse-hubzilla-b7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4.zip
Merge pull request #372 from anaqreon/plugin-repo
Manage addon git repositories via the admin plugins page
Diffstat (limited to 'library/symfony/process/Tests/NonStopableProcess.php')
-rw-r--r--library/symfony/process/Tests/NonStopableProcess.php45
1 files changed, 45 insertions, 0 deletions
diff --git a/library/symfony/process/Tests/NonStopableProcess.php b/library/symfony/process/Tests/NonStopableProcess.php
new file mode 100644
index 000000000..54510c16a
--- /dev/null
+++ b/library/symfony/process/Tests/NonStopableProcess.php
@@ -0,0 +1,45 @@
+<?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)
+{
+ switch ($signal) {
+ case SIGTERM:
+ $name = 'SIGTERM';
+ break;
+ case SIGINT:
+ $name = 'SIGINT';
+ break;
+ default:
+ $name = $signal.' (unknown)';
+ break;
+ }
+
+ echo "received signal $name\n";
+}
+
+declare (ticks = 1);
+pcntl_signal(SIGTERM, 'handleSignal');
+pcntl_signal(SIGINT, 'handleSignal');
+
+$duration = isset($argv[1]) ? (int) $argv[1] : 3;
+$start = microtime(true);
+
+while ($duration > (microtime(true) - $start)) {
+ usleep(1000);
+}