From d25bae42a7292fab3fcfd19961eaf248f44d8c78 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Mon, 5 Nov 2012 15:16:33 +0100 Subject: [PATCH] Fix #990 : add check on posix support for pcntl --- lib/classes/setup.class.php | 3 ++- lib/classes/task/Scheduler.class.php | 3 +-- lib/classes/task/manager.class.php | 10 ++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/classes/setup.class.php b/lib/classes/setup.class.php index f12e9cc451..83c6bf02d1 100644 --- a/lib/classes/setup.class.php +++ b/lib/classes/setup.class.php @@ -39,6 +39,7 @@ class setup , 'pcntl' , "PDO" , "phrasea2" + , 'posix' , "SimpleXML" , "sockets" , "xml" @@ -375,7 +376,7 @@ class setup $constraints = array(); foreach (self::$PHP_EXT as $ext) { - if ('pcntl' === $ext && 0 === stripos(strtolower(PHP_OS), 'win')) { + if (in_array($ext, array('pcntl', 'posix')) && defined('PHP_WINDOWS_VERSION_BUILD')) { continue; } diff --git a/lib/classes/task/Scheduler.class.php b/lib/classes/task/Scheduler.class.php index 26193a9477..85f2ef2745 100755 --- a/lib/classes/task/Scheduler.class.php +++ b/lib/classes/task/Scheduler.class.php @@ -65,10 +65,9 @@ class task_Scheduler $nullfile = 'NUL'; } - if (function_exists('pcntl_fork')) { + if (\task_manager::isPosixPcntlSupported()) { // avoid php when a task ends pcntl_signal(SIGCHLD, SIG_IGN); - $this->method = self::METHOD_FORK; } diff --git a/lib/classes/task/manager.class.php b/lib/classes/task/manager.class.php index 06044025cb..02c505bc3a 100755 --- a/lib/classes/task/manager.class.php +++ b/lib/classes/task/manager.class.php @@ -193,6 +193,16 @@ class task_manager return $ret; } + /** + * Returns true if Pcntl posix supported is enabled, false otherwise + * + * @return Boolean + */ + public static function isPosixPcntlSupported() + { + return extension_loaded('pcntl') && extension_loaded('posix'); + } + public static function getAvailableTasks() { $taskdir = array(