При запуске очередей Laravel в среде общего хостинга вы обычно сталкиваетесь с некоторыми ограничениями по сравнению с выделенным сервером или облачной инфраструктурой. Однако есть несколько методов, которые вы можете попробовать, чтобы это сработало. Вот несколько подходов с примерами кода:
-
Использование заданий Cron:
- Настройте задание cron в своей учетной записи общего хостинга, чтобы периодически выполнять рабочую команду очереди Laravel.
- Добавьте следующую запись в файл crontab:
* * * * * php /path/to/your/project/artisan queue:work --daemon --once - В этом примере обработчик очереди запускается каждую минуту. Отрегулируйте частоту по мере необходимости.
-
Использование Supervisor:
- Некоторые провайдеры виртуального хостинга поддерживают систему управления процессами Supervisor.
- Создайте файл конфигурации Supervisor, например,
laravel-queue.conf[program:laravel_queue] command=php /path/to/your/project/artisan queue:work --daemon --once autostart=true autorestart=true user=your_username - Замените
/path/to/your/projectфактическим путем к файлам вашего проекта Laravel. - Используйте подходящее имя пользователя в поле
user. - Инструкции по настройке Supervisor см. в документации вашего хостинг-провайдера.
-
Использование длинного опроса:
- В среде общего хостинга у вас может не быть прямого доступа к заданиям cron или системам управления процессами. В таких случаях вы можете использовать длинный опрос для непрерывной проверки и обработки заданий в очереди.
-
Создайте PHP-скрипт, например,
queue-worker.php, со следующим кодом:<?php require __DIR__.'/path/to/your/project/vendor/autoload.php'; require_once __DIR__.'/path/to/your/project/bootstrap/app.php'; use Illuminate\Support\Facades\Artisan; while (true) { Artisan::call('queue:work', [ '--daemon' => true, '--once' => true, ]); usleep(500000); // Sleep for 0.5 seconds before checking again. } - Замените
/path/to/your/projectфактическим путем к файлам вашего проекта Laravel. - Загрузите сценарий
queue-worker.phpв свою учетную запись общего хостинга и выполните его, открыв его URL-адрес в браузере или используя такой инструмент, как cURL.