如何使用beanstalkd启动Laravel队列

如何使用beanstalkd启动Laravel队列,laravel,jobs,beanstalkd,Laravel,Jobs,Beanstalkd,我对Laravel 4中排队工作的事情还很陌生。我有一些流程繁重的任务,我需要在用户执行特定操作后在后台运行站点 当我为我的网站进行本地开发时,我使用的是: Queue::push('JobClass', array('somedata' => $dataToBeSent)); 我用本地的“同步”驱动程序来做。(作业会自动启动,影响用户体验,但我假设在进入生产阶段时,我可以将其切换到beanstalkd,然后在后台运行) 这让我想到了我现在的处境。我已经用composer安装的依赖项设置

我对Laravel 4中排队工作的事情还很陌生。我有一些流程繁重的任务,我需要在用户执行特定操作后在后台运行站点

当我为我的网站进行本地开发时,我使用的是:

Queue::push('JobClass', array('somedata' => $dataToBeSent));
我用本地的“同步”驱动程序来做。(作业会自动启动,影响用户体验,但我假设在进入生产阶段时,我可以将其切换到beanstalkd,然后在后台运行)

这让我想到了我现在的处境。我已经用composer安装的依赖项设置了beanstalkd,beanstalkd进程正在侦听新作业。我安装了beanstalk管理界面,可以看到我的作业进入队列,但我不知道如何实际运行它们


任何帮助都将受到感谢,谢谢

这实际上是Laravel中一个非常糟糕的特性

实际上,您需要做的是将JobClass.php放在一个自动加载的文件夹中,我使用app/命令,但如果您愿意,它们也可以放在app/控制器或app/模型中。这个函数需要有一个接受$job和$data参数的fire事件

要运行这些,只需在终端中执行
php artisan queue:listen--timeout=60
,它就会忙着清空队列,直到队列为空,或者运行时间超过60秒。(小提示:超时是启动队列的时间限制,因此如果一个作业需要10秒,它可能会运行69秒

如果您只想运行一个作业(非常适合测试),请运行
php artisan queue:work


有这样的工具可以确保您的作业处理程序保持运行,但我建议根据需要处理数据的速度和输入的数据量,每X分钟启动一次Cron任务。

请记住,您需要对artisan进行路径规划


php/some/path/to/artisan queue:work

谢谢。Laravel真的需要更好的文档。一个很棒的框架,但是有糟糕的文档仍然很糟糕。