+
+ /**
+ * 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
+ * @param int $seconds Number of seconds after which the cmd is killed
+ * @param string $name Command name for exception
+ *
+ * @return void
+ * @throws \Exception When the exit code is not 0
+ */
+ public static function runForSomeTime($cmd, $seconds, $name)
+ {
+ return static::run(
+ 'timeout --signal=9 ' . $seconds . 's ' . $cmd,
+ $name
+ );
+ }