Str*_*ren 1 php queue jobs frameworks laravel
我是第一次在L4中设置队列,我遇到了一些问题.我有这样简单的控制器方法:
public function getIndex()
{
$data = array(
'offset' => 3300000,
'site' => 1
);
Queue::push('Class@jobmethod', $data);
return 'OK!';
}
Run Code Online (Sandbox Code Playgroud)
在作业方法的底部,我做这样的事情:
public function jobmethod()
{
....
$data = array(
'offset' => $data['offset'] + 100,
'site' => $data['site']
);
Queue::push('Class@jobmethod', $data);
$job->delete();
}
Run Code Online (Sandbox Code Playgroud)
因此,作业再次以更高的偏移量循环遍历队列.现在我的问题是,当我在浏览器中调用控制器方法时,它将永远不会返回OK!,但只是继续加载页面?我将作业设置为登录数据库表,我可以看到它持续运行了几次.
有没有人知道这里发生了什么?
我猜你的默认队列处理程序设置为"sync".你可以在app/config/queue.php中查看.
这样做直接处理事件,因为没有安装实际队列.
因此,在您的情况下,它将不断运行jobmethod,因为它不断迭代相同的函数.如果在jobmethod中删除Queue push,它将返回OK.
所以要做到这一点,你必须安装像Beanstalkd这样的排队系统.如果这样做,请确保添加"pda/pheanstalk": "dev-master"composer.json的require部分.
如果你想运行队列,请查看我的答案:如何使用beanstalkd解雇Laravel队列
| 归档时间: |
|
| 查看次数: |
4893 次 |
| 最近记录: |