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

时间:2020-03-18 11:25:29

标签: php laravel queue cpanel jobs

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

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

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 ”的新文件夹,其中放置了除“公共文件夹”之外的所有所有laravel文件。公用文件夹的内容放置在根文件夹的“ public_html”内部。然后,我相应地编辑了index.php。如下所示:

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

那么,可能是我没有正确指向我的“工匠”,还是我弄错了所有东西? 请,如果有人知道这样做的更好方法,或者我弄错了什么,我会很高兴的。预先感谢。

1 个答案:

答案 0 :(得分:1)

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

nohup php artisan queue:work --daemon &

您可以在高级部分找到terminal

enter image description here

它将在后台运行您的queue

确保在您运行上述命令时将其放在项目的 app 路径