【问题标题】:Phalcon + Beanstalkd, how to link my controller?Phalcon + Beanstalkd,如何链接我的控制器?
【发布时间】:2018-02-05 16:50:29
【问题描述】:

我有一个由 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 必须在哪个控制器中执行我的功能的作业?文档非常规避,我不确定我是否做得很好!

谢谢

【问题讨论】:

    标签: php phalcon beanstalkd


    【解决方案1】:

    Beanstalkd 只是工作队列。不是工作处理程序。您需要创建一些 cron 任务来自己执行此功能。最好只使用 cli 任务恕我直言并收集队列作业。

    【讨论】:

    • 天啊...我以为 Beanstalkd 是用来代替 Cron 任务的...那是怎么回事?为什么不使用数据库简单条目而不是 beanstalkd? x) 无论如何,谢谢你,我将找到如何使用 cron + beanstakld + supervisord + phalcon 创建完美的工作流程......这么多东西......
    • 无压力 i/o 并减少硬盘上的读/写。 Benstalkd 在内存中工作,比将其放入数据库要快得多。
    • 你说对了!我将制定一个可行的解决方案,如果有人遇到同样的问题,我可能会在这里发布:)
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多