Управление очередями
Queuety поддерживает несколько именованных очередей. Каждый обработчик обрабатывает одну очередь или упорядоченный список очередей (см. Обработчики), а очереди можно приостанавливать и возобновлять независимо друг от друга.
Именованные очереди
Отправляйте задания в определенные очереди:
use Queuety\Queuety;
Queuety::dispatch( 'send_email', $payload )->on_queue( 'emails' );
Queuety::dispatch( 'process_image', $payload )->on_queue( 'media' );
Queuety::dispatch( 'sync_data', $payload )->on_queue( 'sync' );
Запускайте обработчики для каждой очереди:
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync
Очередь по умолчанию — default. Если не указать очередь, задания попадут в нее.
Приостановка и возобновление
Приостановите очередь, чтобы обработчики не забирали новые задания. Задания, которые уже обрабатываются, будут завершены, но новые забираться не будут.
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );
Проверьте, приостановлена ли очередь:
if ( Queuety::is_paused( 'emails' ) ) {
// Queue is paused
}
Через CLI:
wp queuety pause emails
wp queuety resume emails
Это полезно во время развертывания или технического обслуживания, когда нужно временно остановить обработку, не завершая работу обработчика.
Статистика очередей
Получите количество заданий, сгруппированных по статусу:
$stats = Queuety::stats(); // all queues
$stats = Queuety::stats( 'emails' ); // specific queue
// Returns: ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]
Через CLI:
wp queuety status
wp queuety status --queue=emails
Отложенные задания
Выведите список всех отложенных заданий (неудачных после исчерпания числа повторных попыток):
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queue
Повторите их обработку:
Queuety::retry( $job_id ); // retry a specific job
Queuety::retry_buried(); // retry all buried jobs
Удаление выполненных заданий
Удаляйте старые выполненные задания, чтобы база данных оставалась чистой:
$count = Queuety::purge(); // uses QUEUETY_RETENTION_DAYS (default: 7)
$count = Queuety::purge( 30 ); // purge jobs older than 30 days
Через CLI:
wp queuety purge
wp queuety purge --older-than=30