Php 凤凰城快速找工作
我对pheanstalk版本3.0.2中的队列有问题。队列中有0-10k个作业,有时我必须在此队列中搜索数据并添加下一个作业。所以我想增加一些不存在的工作 在Pheanstalk类中,我没有看到在作业中搜索并且不将此作业移动到当前保留作业的方法 所以我需要一种快速的方法,只读取作业中的数据而不保留数据 我的例子是:Php 凤凰城快速找工作,php,beanstalkd,pheanstalk,Php,Beanstalkd,Pheanstalk,我对pheanstalk版本3.0.2中的队列有问题。队列中有0-10k个作业,有时我必须在此队列中搜索数据并添加下一个作业。所以我想增加一些不存在的工作 在Pheanstalk类中,我没有看到在作业中搜索并且不将此作业移动到当前保留作业的方法 所以我需要一种快速的方法,只读取作业中的数据而不保留数据 我的例子是: public function searchId($id) { $pheanstalk = $this->getPhenstalk();
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;
}
但是放松需要很多时间。我该怎么做呢?正如答案所示,Beanstalkd不是数组。它不是为了被搜索而设计的,只是为了找到下一份工作
你所做的大量保留/发布只是把它们放回队列中,很可能是你保留的下一件事,如此循环下去
如果您想查看队列中是否有特定的作业任务/name/ID,请在其他地方做一个注释,例如在另一个数据存储中——Redis或memcached。将作业放入队列时创建条目,并在作业从Beanstalkd中删除时将其删除