X-Git-Url: https://git.cweiske.de/phancap.git/blobdiff_plain/9a568c09ae8cef2f0222e82dc93ed122615c2590..c2039a447e4bd044eedf31258bace2cc3f03fc29:/src/phancap/Executor.php diff --git a/src/phancap/Executor.php b/src/phancap/Executor.php index 12a34c3..ebe0d60 100644 --- a/src/phancap/Executor.php +++ b/src/phancap/Executor.php @@ -1,17 +1,65 @@ + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @link http://cweiske.de/phancap.htm + */ namespace phancap; +/** + * Run a shell command + * + * @category Tools + * @package Executor + * @author Christian Weiske + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @version Release: @package_version@ + * @link http://cweiske.de/phancap.htm + */ class Executor { + /** + * Run a shell command and check exit code. + * + * @param string $cmd Full command including parameters and options + * + * @return void + * @throws \Exception When the exit code is not 0 + */ public static function run($cmd) { exec($cmd . ' 2>&1', $arOutput, $exitcode); if ($exitcode != 0) { //FIXME: do something with $arOutput - echo implode("\n", $arOutput) . "\n"; + //echo implode("\n", $arOutput) . "\n"; throw new \Exception('Error running cutycapt', $exitcode); } } -} + /** + * Let the command run for some time. Kill it if it did not exit itself. + * + * We use the GNU coreutils "timeout" utility instead of the pcntl + * extension since pcntl is disabled on mod_php. + * + * @param string $cmd Full command including parameters and options + * + * @return void + * @throws \Exception When the exit code is not 0 + */ + public static function runForSomeTime($cmd, $seconds) + { + return static::run( + 'timeout --signal=9 ' . $seconds . 's ' . $cmd + ); + } +} ?>