1
0
Fork 0
mirror of synced 2024-09-29 08:51:28 +13:00

feat: use coroutines delay system

This commit is contained in:
loks0n 2024-07-18 13:03:24 +01:00
parent 31d4932fdf
commit f02bf6ac5a

View file

@ -26,6 +26,7 @@ class ScheduleExecutions extends ScheduleBase
$queue = $pools->get('queue')->pop();
$connection = $queue->getResource();
$queueForFunctions = new Func($connection);
$intervalEnd = (new \DateTime())->modify('+' . self::ENQUEUE_TIMER . ' seconds');
foreach ($this->schedules as $schedule) {
if (!$schedule['active']) {
@ -38,13 +39,16 @@ class ScheduleExecutions extends ScheduleBase
continue;
}
$now = new \DateTime();
$scheduledAt = new \DateTime($schedule['schedule']);
if ($scheduledAt > $now) {
if ($scheduledAt <= $intervalEnd) {
continue;
}
$delay = $scheduledAt->getTimestamp() - (new \DateTime())->getTimestamp();
\go(function () use ($queueForFunctions, $schedule, $delay) {
\sleep($delay);
$queueForFunctions
->setType('schedule')
// Set functionId instead of function as we don't have $dbForProject
@ -57,6 +61,7 @@ class ScheduleExecutions extends ScheduleBase
->setBody($schedule['data']['body'] ?? '')
->setProject($schedule['project'])
->trigger();
});
$dbForConsole->deleteDocument(
'schedules',