burriko/job-queue

使用Beanstalk处理作业的库。

0.1.0 2015-08-28 13:42 UTC

This package is not auto-updated.

Last update: 2024-09-18 09:29:16 UTC


README

Build Status

这是一个正在进行的库,用于轻松地将作业推送到队列中,以便在Web请求之外进行处理。目前仅支持Beanstalk队列。API将在v1之前经常更改。

用法

首先,您需要创建一个队列的实例。

$pheanstalk = new Pheanstalk\Pheanstalk('localhost');
$queue = new JobQueue\BeanstalkQueue($pheanstalk, 'email_queue');

创建作业

然后,您可以将作业推送到队列。

$job = new JobQueue\Job('EmailClient', ['client_id' => $id]);
$queue->push($job);

这假设您有一个名为 EmailClient 的类,其中有一个名为 handle 的方法,该方法接受一个名为 client_id 的参数。当作业从队列中检索并执行时,将会调用此方法。

处理队列

这将监听新作业被推送到队列,然后执行它们。

$runner = new JobQueue\JobRunner();
$worker = new JobQueue\QueueWorker($queue, $runner);

$worker->processQueue();

要仅处理下一个作业,您可以这样做。

$worker->processNextJob();

您可以通过传递一个实现psr/log的日志记录器来查看QueueWorker正在做什么。

$runner = new JobQueue\JobRunner();
$logger = new Monolog\Logger('queue');
$worker = new JobQueue\QueueWorker($queue, $runner, $logger);