问题描述
我想知道如何手动运行PHP artisan queue:listen database
在共享主机上执行作业。我正在尝试从路由文件web.PHP
Route::get('/job',function () {
Artisan::call('queue:listen');
return 'Job Started....';
});
我在cPanel中尝试cron作业的另一种方法:
/usr/local/bin/PHP/home2/courage/project_folder/artisan queue:listen database --daemon
但是两种方法都行不通。 我能够从本地运行该作业。如何实现此目标?
解决方法
Laravel queue:[listen|work]
是一项长期运行的后台任务。一旦启动,除非您发送退出/终止信号,否则它将一直运行。另一方面,所有HTTP调用都有超时。因此,如果您调用HTTP端点,则您的应用程序(可以是任何技术堆栈)都将在特定时间段(通常为30秒)后超时。
因此,从理论上讲,是的。在您的HTTP端点中,您可以使用Artisan
门面运行该命令,但是在达到t / o后它将停止工作。
第二,你的老兄。 Cron应该定期工作。假设您希望在5分钟后将日志从服务器转移到另一台服务器,在这种情况下,您可以运行cron。 Crons就像计划作业。因此,实际上,克朗对您的情况也没有任何作用。
最后,在共享主机中,除非提供者为您提供ssh访问,否则您只能提供HTTP req-res。正如其他人在评论中所说,您不能在共享托管中使用Laravel的全部功能。您需要从共享主机迁移到任何VPS。