Zarządzanie kolejkami
Queuety obsługuje wiele nazwanych kolejek. Każdy proces roboczy obsługuje jedną kolejkę lub uporządkowaną listę kolejek (zob. Procesy robocze), a każdą kolejkę można niezależnie wstrzymywać i wznawiać.
Nazwane kolejki
Przekazuj zadania do określonych kolejek:
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' );
Uruchamiaj procesy robocze dla każdej kolejki:
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync
Domyślna kolejka to default. Jeśli nie określisz kolejki, zadania trafią właśnie do niej.
Wstrzymywanie i wznawianie
Wstrzymaj kolejkę, aby zatrzymać procesy robocze przed pobieraniem nowych zadań. Zadania, które są już przetwarzane, zostaną ukończone, ale nie będą pobierane nowe.
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );
Sprawdź, czy kolejka jest wstrzymana:
if ( Queuety::is_paused( 'emails' ) ) {
// Queue is paused
}
Za pomocą CLI:
wp queuety pause emails
wp queuety resume emails
Przydaje się to podczas wdrożeń lub przerw konserwacyjnych, gdy chcesz tymczasowo zatrzymać przetwarzanie bez wyłączania procesu roboczego.
Statystyki kolejek
Pobierz liczbę zadań pogrupowanych według stanu:
$stats = Queuety::stats(); // all queues
$stats = Queuety::stats( 'emails' ); // specific queue
// Returns: ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]
Za pomocą CLI:
wp queuety status
wp queuety status --queue=emails
Zadania w archiwum
Wyświetl listę wszystkich zadań w archiwum (niepowodzenie po wyczerpaniu prób ponowienia):
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queue
Ponów je:
Queuety::retry( $job_id ); // retry a specific job
Queuety::retry_buried(); // retry all buried jobs
Usuwanie ukończonych zadań
Usuń stare, ukończone zadania, aby utrzymać porządek w bazie danych:
$count = Queuety::purge(); // uses QUEUETY_RETENTION_DAYS (default: 7)
$count = Queuety::purge( 30 ); // purge jobs older than 30 days
Za pomocą CLI:
wp queuety purge
wp queuety purge --older-than=30