Aller au contenu

Gestion des files d’attente

Queuety prend en charge plusieurs files d’attente nommées. Chaque worker traite une file ou une liste ordonnée de files (voir Workers), et les files peuvent être mises en pause ou reprises indépendamment.

Files d’attente nommées

Distribuez les tâches vers des files d’attente spécifiques :

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' );

Exécutez des workers pour chaque file d’attente :

Shell
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync

La file d’attente par défaut est default. Si vous ne précisez pas de file, les tâches y sont envoyées.

Mise en pause et reprise

Mettez une file en pause pour empêcher les workers de prendre de nouvelles tâches. Les tâches déjà en cours seront terminées, mais aucune nouvelle tâche ne sera prise en charge.

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

Vérifiez si une file d’attente est en pause :

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

Via CLI :

Shell
wp queuety pause emails
wp queuety resume emails

C’est utile lors des déploiements ou des périodes de maintenance, lorsque vous souhaitez suspendre temporairement le traitement sans arrêter le worker.

Statistiques des files d’attente

Obtenez le nombre de tâches regroupées par état :

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

// Returns: ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]

Via CLI :

Shell
wp queuety status
wp queuety status --queue=emails

Tâches en attente définitive

Listez toutes les tâches en attente définitive (ayant échoué après épuisement des tentatives) :

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

Relancez-les :

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

Purger les tâches terminées

Supprimez les anciennes tâches terminées pour nettoyer la base de données :

PHP
$count = Queuety::purge();     // uses QUEUETY_RETENTION_DAYS (default: 7)
$count = Queuety::purge( 30 ); // purge jobs older than 30 days

Via CLI :

Shell
wp queuety purge
wp queuety purge --older-than=30