繁体   English   中英

如何在共享主机 (CPanel) 上调度 Laravel 中的排队作业

[英]How To Dispatch Queued Jobs In Laravel On Shared Hosting (CPanel)

大家好。 我创建的 Laravel 应用程序存在这个持续存在的问题。 我想向订阅者发送批量电子邮件。 我想对电子邮件(作业)进行排队,以免它们减慢我的应用程序的速度。 我正在使用共享主机帐户。 没有队列进程,邮件工作正常。 但是,没有它,它们就无法工作。 我使用数据库作为队列连接,并且在我的数据库中设置了“jobs”表。 我想到目前为止,一切都运行良好,因为无论何时我发送邮件,我都可以看到数据库中的作业。 问题是我似乎无法在共享主机上创建 queue:work 命令,这与我的系统(本地)不同。

此外,我使用php artisan make:command cronEmail创建了命令,在 App/Console/Kernel.php 中,我设置了调度方法如下

protected function schedule(Schedule $schedule)
{
    $schedule->command('queue:work --tries=3')
            ->cron('* * * * * *')
            ->withoutOverlapping();
}

然后我在我的 cpanel 上创建了一个 cron 作业,如下所示:

php /home/myrootfolder/mywebsitefolder/artisan queue:work >> /dev/null 2>&1

然而,我仍然没有得到任何结果。 邮件未发送。

我的网站文件设置如下:在 cpanel 的根文件夹中,我创建了一个名为“ mywebsitefolder ”的新文件夹,我将除“public 文件夹”之外的所有 Laravel 文件放在其中。 public 文件夹的内容放在根文件夹的“public_html”中。 然后我相应地编辑了我的 index.php。 如下图所示:

require __DIR__.'/../mywebsitefolder/vendor/autoload.php';
$app = require_once __DIR__.'/../mywebsitefolder/bootstrap/app.php';

那么,是不是我没有正确地指向我的“工匠”,或者我把一切都弄错了? 拜托,如果有人知道这样做的更好方法或我哪里出错了,我会很高兴。 提前致谢。

您可以轻松地从您的Cpanel找到终端打开它并运行此命令

nohup php artisan queue:work --daemon &

您可以在高级部分找到terminal

在此处输入图片说明

它会在后台运行你的queue

确保当您运行上面的命令时位于您的项目应用程序路径中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM