Php 法尔康+;豆茎,如何连接我的控制器?

Php 法尔康+;豆茎,如何连接我的控制器?,php,phalcon,beanstalkd,Php,Phalcon,Beanstalkd,我有一个由Phalcon支持的restful API,它需要对一些任务进行后台处理 在MailController中,我有一个从Imap获取邮件的方法。因为我需要在这里放一些慢的东西,我想通过一个作业来处理它 我的路由调用mailAction,作业启动,作业应在此控制器中执行 Services.php $di->setShared("queue", function(){ $queue = new Beanstalk([ "host" => "127.0.0.1",

我有一个由Phalcon支持的restful 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必须在哪个控制器中执行我的功能?文档是相当回避的,我不确定我是否走上了好的道路


谢谢

豆茎只是在排队等待工作。不是一个工作处理者。您需要创建一些cron任务来自己执行此函数。最好只使用cli任务imho和收集队列作业。

God。。。我以为Beanstalkd是用来取代Cron任务的。。。那怎么了?为什么不使用数据库简单条目而不是beanstalkd?x) 无论如何,谢谢你,我将找到如何使用cron+beanstakld+supervisord+phalcon创建完美的工作流。。。这么多的东西…没有压力的i/o和减少读/写硬盘。Benstadd在内存中工作,比将其放入数据库快得多。你说得对!我将制定一个可行的解决方案,如果有人遇到同样的问题,我可能会在这里发布:)