pensionstalk 快速搜索工作
pheanstalk search fast a job
我在 pheanstalk(版本:3.0.2)中遇到队列问题。队列中有 0-10k 个作业,有时我必须在此队列中搜索数据并添加下一个作业。所以我想添加不存在的职位。
在 class Pheanstalk 中,我没有看到在工作中搜索的方法,也没有将此工作移动到 "current-jobs-reserved"。
所以我需要快速的方法,只读取作业中的数据而不保留。
我的例子:
public function searchId($id)
{
$pheanstalk = $this->getPhenstalk();
while ($job = $pheanstalk->reserveFromTube(self::TUBE)) {
$json = $job->getData();
$data = json_decode($json, true);
if($data['id'] == $id){
return true;
}
$pheanstalk->release($job);
}
return false;
}
但是relase()需要很多时间。我该怎么做?
正如在“How can I get a list of all jobs in a beanstalk tube?”的回答中,Beanstalkd 不是一个数组。它不是为了被搜索而设计的,只是为了找到下一份工作。
您对 mass-reserve/release 所做的只是将它们放回队列中,很可能是您预订的下一件事,如此循环往复。
如果您想查看某个特定的 job-task/name/ID 是否在队列中,请在别处做个记录,在另一个数据存储中 - 例如 Redis 或 memcached。将作业放入队列时创建一个条目,并在作业从 Beanstalkd 中删除后删除它。
我在 pheanstalk(版本:3.0.2)中遇到队列问题。队列中有 0-10k 个作业,有时我必须在此队列中搜索数据并添加下一个作业。所以我想添加不存在的职位。
在 class Pheanstalk 中,我没有看到在工作中搜索的方法,也没有将此工作移动到 "current-jobs-reserved"。
所以我需要快速的方法,只读取作业中的数据而不保留。
我的例子:
public function searchId($id)
{
$pheanstalk = $this->getPhenstalk();
while ($job = $pheanstalk->reserveFromTube(self::TUBE)) {
$json = $job->getData();
$data = json_decode($json, true);
if($data['id'] == $id){
return true;
}
$pheanstalk->release($job);
}
return false;
}
但是relase()需要很多时间。我该怎么做?
正如在“How can I get a list of all jobs in a beanstalk tube?”的回答中,Beanstalkd 不是一个数组。它不是为了被搜索而设计的,只是为了找到下一份工作。
您对 mass-reserve/release 所做的只是将它们放回队列中,很可能是您预订的下一件事,如此循环往复。
如果您想查看某个特定的 job-task/name/ID 是否在队列中,请在别处做个记录,在另一个数据存储中 - 例如 Redis 或 memcached。将作业放入队列时创建一个条目,并在作业从 Beanstalkd 中删除后删除它。