From f5b04017748deda4420c52e61cc7c1bb2b9c68b9 Mon Sep 17 00:00:00 2001 From: Themroc <7hemroc@gmail.com> Date: Wed, 2 Feb 2022 17:21:17 +0100 Subject: [PATCH 1/2] Make sure we never run more than one instance --- Events.php | 11 +++++++++++ jobs/GetFeedUpdates.php | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/Events.php b/Events.php index e7235b4..c101cbc 100644 --- a/Events.php +++ b/Events.php @@ -11,6 +11,10 @@ class Events { + /** + * @var string mutex to acquire + */ + const MUTEX_ID = 'rss-cron'; /** * Defines what to do if admin menu is initialized. @@ -40,6 +44,11 @@ public static function onAdminMenuInit($event) */ public static function onCron($event) { + if (! Yii::$app->mutex->acquire(static::MUTEX_ID)) { + Console::stdout("RSS cron execution skipped - already running!\n"); + return; + } + try { Console::stdout("Updating RSS news feeds...\n"); $ccmsEnabled = ContentContainerModuleState::find()-> @@ -62,6 +71,8 @@ public static function onCron($event) $event->sender->stderr($e->getMessage()."\n"); Yii::error($e); } + + Yii::$app->mutex->release(static::MUTEX_ID); } } diff --git a/jobs/GetFeedUpdates.php b/jobs/GetFeedUpdates.php index 40b5903..6f3f43e 100644 --- a/jobs/GetFeedUpdates.php +++ b/jobs/GetFeedUpdates.php @@ -49,6 +49,11 @@ class GetFeedUpdates extends ActiveJob private $newest; # newest date we are accepting private $items; # array of sij\humhub\modules\rss\components\RssElement keyed by pubDate + /** + * @var string mutex to acquire + */ + const MUTEX_ID = 'rss-queue'; + private function log($message) { if ( $this->logFileHandle ) { fwrite($this->logFileHandle, $message); @@ -444,6 +449,10 @@ private function downloadNewsFeed() */ public function run() { + if (! Yii::$app->mutex->acquire(static::MUTEX_ID)) { + Console::stdout("RSS queue execution skipped - already running!\n"); + return; + } ####### $this->logFileHandle = fopen(dirname(__FILE__) . '/log.txt', 'w'); @@ -478,5 +487,6 @@ public function run() fclose($this->logFileHandle); } + Yii::$app->mutex->release(static::MUTEX_ID); } } From a377a0bec3980f788f37d5ef37a6964a38fa7f96 Mon Sep 17 00:00:00 2001 From: Themroc <7hemroc@gmail.com> Date: Wed, 2 Feb 2022 17:32:55 +0100 Subject: [PATCH 2/2] Make queue-run tell what it's doing --- jobs/GetFeedUpdates.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jobs/GetFeedUpdates.php b/jobs/GetFeedUpdates.php index 6f3f43e..5530a1d 100644 --- a/jobs/GetFeedUpdates.php +++ b/jobs/GetFeedUpdates.php @@ -3,6 +3,7 @@ namespace sij\humhub\modules\rss\jobs; use Yii; +use yii\helpers\Console; use humhub\modules\queue\ActiveJob; use humhub\modules\post\models\Post; @@ -107,6 +108,7 @@ private function postMessage($message, $datePublished = false) if ( count($oldContent) == 1 ) { $post = Post::findOne($oldContent[0]->object_id); $this->log("\n\n### update Post\n"); + Console::stdout("RSS queue: updating post... "); } } @@ -114,6 +116,7 @@ private function postMessage($message, $datePublished = false) if ( $post === null ) { $post = new Post($this->space); $this->log("\n\n### new Post\n"); + Console::stdout("RSS queue: creating new post... "); } $post->created_by = @@ -149,6 +152,7 @@ private function postMessage($message, $datePublished = false) ->query(); } + Console::stdout(Console::renderColoredString("%gdone.%n\n", 1)); } /**