我有此过程设置。
php artisan queue:work beanstalkd --sleep=3 --tries=1 --timeout=0 --queue=medium,messages
我还有一项设置为
的工作public $timeout = 100000000;
但是在第一次运行之前,消息has been attempted too many times or run too long. The job may have previously timed out
停止了工作。
我在php.ini中也有这个
max_execution_time = 0
我在这里想念什么?
答案 0 :(得分:0)
我想从命令行执行的事情(正如您在工作中提到的那样,会创建更多工作)。但事实是,您可以将其业务逻辑提取到命令。
Example:带有的控制台命令会触发命令从Imgur获取图像。 FetchImages
类包含获取图像的实际业务逻辑。
包含实际逻辑的类。您还应该能够使用app()->make(Command::class)->handle()
从应用程序中调用此命令。
Example:示例1中提到的命令。该逻辑包含对Imgur进行实际API调用并处理返回数据的逻辑。
Laravel 5.0,所以jobs
当时不是问题。但正如我所看到的,乔布斯就像命令一样,但是它们排在队列中并且可以分派。 (正如您在这些示例中可能看到的那样,这些命令实现了您提到的接口SelfHandling
和ShouldBeQueued
)。
我发现Commands
和Jobs
中的变化很难理解。
编辑: 从Laravel文档中:
app / Commands目录已重命名为app / Jobs。但是,不需要将所有命令移到新位置,可以继续使用Artisan命令make:command和handler:command来生成类。
同样,app / Handlers目录已重命名为app / Listeners,现在仅包含事件侦听器。但是,不需要移动或重命名现有的命令和事件处理程序,并且可以继续使用handler:event命令来生成事件处理程序。
通过向后兼容Laravel 5.0文件夹结构,您可以将应用程序升级到Laravel 5.1,并在方便您或您的团队时将事件和命令缓慢升级到新位置。