0

我想知道如何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  

但是这两种方法都行不通。我能够从本地运行这项工作。我怎样才能做到这一点?

4

1 回答 1

2

Laravelqueue:[listen|work]是一个长期运行的后台任务。一旦启动,除非您发送退出/终止信号,否则它会一直运行。另一方面,所有 HTTP 调用都有超时。所以,如果你调用一个 HTTP 端点,如果你的应用程序(可以是任何技术栈),会在一段时间后(一般是 30 秒)超时。

所以,理论上,是的。在您的 HTTP 端点中,您可以使用Artisan外观运行命令,但它会在命中 t/o 后停止工作。

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

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

于 2020-10-07T16:18:46.610 回答