我正在NGINX上创建一个MySQL数据库的Laravel 4.2应用程序。我正在尝试研究使用队列在任何给定时间减少CPU使用的选项。
我希望任何排队的任务保持在一定的内存使用水平;
但我不明白的是,如果正在运行的任务超过了php artisan queue:listen
(或work)的--memory
参数设置的限制,实际会发生什么。
如果我运行
php artisan -h queue:work
在我的开发终端中,它只是定义了
The memory limit in megabytes (default: 128)
但是没有说明如果任务试图突破这个限制会发生什么。
我认为可能发生的两件事:
1)它将导致队列失败,并最终在我的失败队列表
2)它会以某种方式限制服务器完成任务的处理能力
我希望是2号;我说的对吗?
No。它不能做任何魔术来改变你的代码。它所做的是在任务完成后安全退出任务,并允许它用一个新的worker重新启动。
通常情况下,您会使用memory_limit = -1
运行命令行任务(只要它需要)-这可能很有用,但您也需要能够恢复其他进程能够使用它。
见:IlluminateQueueListener::runProcess(Process $ Process, $memory);