Перейти к содержимому

Управление очередями

Queuety поддерживает несколько именованных очередей. Каждый обработчик обрабатывает одну очередь или упорядоченный список очередей (см. Обработчики), а очереди можно приостанавливать и возобновлять независимо друг от друга.

Именованные очереди

Отправляйте задания в определенные очереди:

PHP
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. Если не указать очередь, задания попадут в нее.

Приостановка и возобновление

Приостановите очередь, чтобы обработчики не забирали новые задания. Задания, которые уже обрабатываются, будут завершены, но новые забираться не будут.

PHP
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );

Проверьте, приостановлена ли очередь:

PHP
if ( Queuety::is_paused( 'emails' ) ) {
    // Queue is paused
}

Через CLI:

Командная оболочка
wp queuety pause emails
wp queuety resume emails

Это полезно во время развертывания или технического обслуживания, когда нужно временно остановить обработку, не завершая работу обработчика.

Статистика очередей

Получите количество заданий, сгруппированных по статусу:

PHP
$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

Отложенные задания

Выведите список всех отложенных заданий (неудачных после исчерпания числа повторных попыток):

PHP
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queue

Повторите их обработку:

PHP
Queuety::retry( $job_id );       // retry a specific job
Queuety::retry_buried();         // retry all buried jobs

Удаление выполненных заданий

Удаляйте старые выполненные задания, чтобы база данных оставалась чистой:

PHP
$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