Implement invoice period warming queue handling with Redis interface
- Added methods `enqueueInvoicePeriodWarming` and `consumeInvoicePeriodWarmingQueue` to the `Redis` interface for managing warming periods. - Modified `invoice_period_flag_service` to enqueue warming periods on cache misses. - Updated cron job logic to process invoice period warming queues and ensure flags are warmed effectively.
This commit is contained in:
@@ -160,11 +160,26 @@ function WarmInvoicePeriodAutomaticFlagsCron(): void
|
||||
$service = new invoice_period_flag_service();
|
||||
$now = new DateTime();
|
||||
$previousMonth = new DateTime('first day of previous month');
|
||||
|
||||
$toWarm = [];
|
||||
foreach ([$now, $previousMonth] as $date) {
|
||||
$dateFrom = $date->format('Y-m-01');
|
||||
$dateTo = $date->format('Y-m-t');
|
||||
$service->warmOrderItemRowsForPeriod($dateFrom, $dateTo);
|
||||
$service->warmAutomaticFlagsForPeriod($dateFrom, $dateTo);
|
||||
$toWarm[$dateFrom . '|' . $dateTo] = ['dateFrom' => $dateFrom, 'dateTo' => $dateTo];
|
||||
}
|
||||
|
||||
try {
|
||||
$queued = (new redis())->consume_invoice_period_warming_queue();
|
||||
foreach ($queued as $period) {
|
||||
$key = $period['dateFrom'] . '|' . $period['dateTo'];
|
||||
$toWarm[$key] = $period;
|
||||
}
|
||||
} catch (Throwable) {
|
||||
}
|
||||
|
||||
foreach ($toWarm as $period) {
|
||||
$service->warmOrderItemRowsForPeriod($period['dateFrom'], $period['dateTo']);
|
||||
$service->warmAutomaticFlagsForPeriod($period['dateFrom'], $period['dateTo']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user