队列管理
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