Laravel 7 运行 queue:listen 来自共享主机上的路由

Laravel 7 run queue:listen from route on shared hosting

我想知道如何 运行 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] 是一个 long-running 后台任务。一旦启动,除非您发送 quit/terminate 信号,否则它将持续 运行。另一方面,所有 HTTP 调用都有超时。所以,如果你调用一个HTTP端点,如果你的应用程序(可以是任何技术栈),会在一定时间后(一般是30s)超时。

所以,理论上,是的。在您的 HTTP 端点中,您可以 运行 使用 Artisan 门面的命令,但它会在到达 t/o.

后停止工作

其次,你的cron。 Crons 应该以周期性的方式工作。假设你想在 5 分钟后将你的日志从你的服务器传输到另一台服务器,在这种情况下,你可以 运行 crons。 Crons 就像计划作业。所以实际上,crons 对你的情况也没有任何影响。

最后,在共享主机中,您只能提供 HTTP req-res,除非提供商为您提供 ssh 访问。正如其他人在评论中所说,您不能在共享主机中使用 Laravel 的全部功能。您需要从共享主机转移到任何 VPS.