Php 法尔康+;豆茎,如何连接我的控制器?
我有一个由Phalcon支持的restful API,它需要对一些任务进行后台处理 在MailController中,我有一个从Imap获取邮件的方法。因为我需要在这里放一些慢的东西,我想通过一个作业来处理它 我的路由调用mailAction,作业启动,作业应在此控制器中执行 Services.phpPhp 法尔康+;豆茎,如何连接我的控制器?,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",
$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在内存中工作,比将其放入数据库快得多。你说得对!我将制定一个可行的解决方案,如果有人遇到同样的问题,我可能会在这里发布:)