Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 凤凰城快速找工作_Php_Beanstalkd_Pheanstalk - Fatal编程技术网

Php 凤凰城快速找工作

Php 凤凰城快速找工作,php,beanstalkd,pheanstalk,Php,Beanstalkd,Pheanstalk,我对pheanstalk版本3.0.2中的队列有问题。队列中有0-10k个作业,有时我必须在此队列中搜索数据并添加下一个作业。所以我想增加一些不存在的工作 在Pheanstalk类中,我没有看到在作业中搜索并且不将此作业移动到当前保留作业的方法 所以我需要一种快速的方法,只读取作业中的数据而不保留数据 我的例子是: public function searchId($id) { $pheanstalk = $this->getPhenstalk();

我对pheanstalk版本3.0.2中的队列有问题。队列中有0-10k个作业,有时我必须在此队列中搜索数据并添加下一个作业。所以我想增加一些不存在的工作

在Pheanstalk类中,我没有看到在作业中搜索并且不将此作业移动到当前保留作业的方法

所以我需要一种快速的方法,只读取作业中的数据而不保留数据

我的例子是:

   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中删除时将其删除