Gestionarea cozilor
Queuety acceptă mai multe cozi cu nume. Fiecare worker procesează o coadă sau o listă ordonată de cozi (consultați Workeri), iar cozile pot fi suspendate și reluate independent.
Cozi cu nume
Lansați sarcini în anumite cozi:
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' );
Rulați workeri pentru fiecare coadă:
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync
Coada implicită este default. Dacă nu specificați o coadă, sarcinile ajung acolo.
Suspendarea și reluarea
Suspendați o coadă pentru a împiedica workerii să preia sarcini noi. Sarcinile deja în curs se vor încheia, dar nu vor fi preluate altele noi.
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );
Verificați dacă o coadă este suspendată:
if ( Queuety::is_paused( 'emails' ) ) {
// Queue is paused
}
Prin CLI:
wp queuety pause emails
wp queuety resume emails
Acest lucru este util în timpul lansărilor sau al perioadelor de mentenanță, când doriți să opriți temporar procesarea fără să opriți workerul.
Statistici despre cozi
Obțineți numărul de sarcini grupate după stare:
$stats = Queuety::stats(); // all queues
$stats = Queuety::stats( 'emails' ); // specific queue
// Returns: ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]
Prin CLI:
wp queuety status
wp queuety status --queue=emails
Sarcini în carantină
Listați toate sarcinile în carantină (care au eșuat după epuizarea încercărilor de reluare):
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queue
Reluați-le:
Queuety::retry( $job_id ); // retry a specific job
Queuety::retry_buried(); // retry all buried jobs
Ștergerea sarcinilor încheiate
Eliminați sarcinile vechi încheiate pentru a păstra baza de date curată:
$count = Queuety::purge(); // uses QUEUETY_RETENTION_DAYS (default: 7)
$count = Queuety::purge( 30 ); // purge jobs older than 30 days
Prin CLI:
wp queuety purge
wp queuety purge --older-than=30