Laravel 7运行队列:从共享主机上的路由监听

问题描述

我想知道如何手动运行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。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...