Phalcon + Beanstalkd,如何链接我的控制器?

时间:2018-02-05 16:50:30

标签: php phalcon beanstalkd

我有一个由Phalcon提供支持的宁静API,需要完成一些任务。

MailController 中,我有一个从Imap获取邮件的方法。因为我需要在这里放一些缓慢的东西,我想通过一份工作来处理它。

我的路由调用mailAction,启动作业并在此控制器中执行作业。

Services.php

$di->setShared("queue", function(){
  $queue = new Beanstalk([
    "host" => "127.0.0.1",
    "port" => "11300"
    ]);

    return $queue;
});

(di中的Beanstalk服务声明)

MailController.php

public function fetchMailboxAction(){
    $queue = $this->di->getShared("queue"); 
    $idQueue = $queue->put([
      "readMailbox" => [
        "email" => $this->email,
        "customer_id" => $this->customer_id
      ]
    ],
    [
      "priority" => 250,
      "delay" => 10,
      "ttr" => 3600
    ]);

    /* other stuff, return blah blah */

}

public function readMailbox($params){
    // readMailboxStuff that should be executed through the job
}

我的问题:如何指定Beanstalkd执行我的函数所在的作业?文档很难回避,我不确定我是不是很好!

由于

1 个答案:

答案 0 :(得分:2)

Beanstalkd只是作业的队列。不是工作经理。您需要创建一些cron任务来自己执行此功能。最好只使用cli任务imho并收集队列作业。