diff --git a/inc/functions.php b/inc/functions.php index ad69e55a..71231203 100755 --- a/inc/functions.php +++ b/inc/functions.php @@ -2924,10 +2924,15 @@ function generation_strategy($fun, $array=array()) { global $config; _syslog(LOG_ERR, "Could not initialize generate queue, falling back to immediate rebuild strategy"); } return 'rebuild'; - } else { - $queue->push(serialize(array('build', $fun, $array, $action))); - return 'ignore'; } + $ret = $queue->push(serialize(array('build', $fun, $array, $action))); + if ($ret === false) { + if ($config['syslog']) { + _syslog(LOG_ERR, "Could not push item in the queue, falling back to immediate rebuild strategy"); + } + return 'rebuild'; + } + return 'ignore'; case 'build_on_load': return 'delete'; } diff --git a/inc/queue.php b/inc/queue.php index 0ecd1e3c..a5905c84 100644 --- a/inc/queue.php +++ b/inc/queue.php @@ -22,11 +22,11 @@ class Queues { $this->key = $key; } - public function push(string $str): Queue { + public function push(string $str): bool { $this->lock->get_ex(); - file_put_contents($this->key . microtime(true), $str); + $ret = file_put_contents($this->key . microtime(true), $str); $this->lock->free(); - return $this; + return $ret !== false; } public function pop(int $n = 1): array { @@ -63,8 +63,8 @@ class Queues { */ public static function none(): Queue { return new class() implements Queue { - public function push(string $str): Queue { - return $this; + public function push(string $str): bool { + return true; } public function pop(int $n = 1): array { @@ -91,7 +91,7 @@ class Queues { interface Queue { // Push a string in the queue. - public function push(string $str): Queue; + public function push(string $str): bool; // Get a string from the queue. public function pop(int $n = 1): array;