Как отправить работу в очереди в Laravel на общем хостинге (CPanel) - PullRequest
1 голос
/ 18 марта 2020

Добрый день всем. У меня есть эта постоянная проблема с laravel приложением, которое я создал. Я хочу отправлять массовые электронные письма подписчикам. Я хочу поставить в очередь электронные письма (задания), чтобы они не замедляли мое приложение. Я использую общий хостинг. Без процесса очереди почта работает нормально. Однако без него они не работают. Я использую базу данных в качестве соединения с очередью, и в моей базе данных настроена таблица «заданий». Я предполагаю, что до этого момента все работало на отлично, потому что каждый раз, когда я отправляю почту, я вижу работы в базе данных. Проблема в том, что я не могу сделать команду queue: work на общем хостинге в отличие от моей системы (локально).

Кроме того, я создал команду, используя php artisan make:command cronEmail, и внутри App / Console / Ядро. php, я настроил метод расписания следующим образом

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

Затем я создал задачу cron на своей cpanel следующим образом:

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

Тем не менее, я все еще не получил никакого результата. Письма не отправляются.

Файлы моего сайта настроены следующим образом: Внутри папки root cpanel я создал новую папку " mywebsitefolder ", куда я помещаю все мои laravel файлы, кроме папки publi c. Содержимое папки publi c находится внутри папки root public_ html. Затем я отредактировал свой индекс. php соответственно. Это показано ниже:

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

Так может ли быть, что я неправильно указываю на своего "ремесленника" или я все неправильно понимаю? Пожалуйста, если кто-нибудь знает лучший способ сделать это или где я все неправильно понимаю, я буду рад. Заранее спасибо.

1 Ответ

1 голос
/ 18 марта 2020

Вы можете легко с вашего Cpanel найти терминал, открыть его и запустить эту команду

nohup php artisan queue:work --daemon &

, вы можете найти terminal в расширенном разделе

enter image description here

он будет запускать ваш queue в фоновом режиме

, когда вы запускаете команду, указанную выше, чтобы быть в вашем проекте app путь

...