Как заставить queue:work работать на хостинге Laravel

Сразу предупреждаю, я знаю, что на эту тему есть много тем. Однако большинство этих тем относятся к 2014 и 2015 годам, когда еще существовал тег --daemon. Есть также некоторые темы 2017 года, которые не полностью объясняют, как сделать все правильно.

Я в контролере отправляю job (драйвер database и таблица jobs (по умолчанию которая))

SendMail::dispatch($supervisorEmail,$project,$candidate);

Вот сам мой SendMail job

class SendMail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $supervisorEmail;
    public $project;
    public $candidate;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($supervisorEmail,$project,$candidate)
    {
        $this->supervisorEmail = $supervisorEmail;
        $this->project = $project;
        $this->candidate = $candidate;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->supervisorEmail)->send(new CandidateOrderMail($this->project,$this->candidate));
    }
}

У меня есть только SSH-консоль в пользовании. Заказчик на своем сервере мне выделил отдельную папку (не root-права), поэтому я не могу Supervisord поставить (ему по барабану, как это реализуется, он не дает мне root-права ツ)

Обшарив весь русо-англоязычный интернет, я нашел лишь два более менее понятных и вроде рабочих решений (не пробовал пока еще). Да, есть еще некоторые темы 2017 года в англ. интернете, где поднимался этот вопрос, однако там используется --daemon, который как бы устарел еще в 2015 году. Ребята, выручайте, одним словом.

Два метода этих:

  1. /usr/local/bin/php /home/electro/public_html/artisan queue:work( this is writing to the command line, right)?

  2. nohup php artisan queue:work --daemon &

Что мне использовать из этого? Я просто думаю, если запущу, то откатить назад на сервере будет еще та головная боль.

Желательно, чтобы еще все работало, если сервер перезапустится (или там какая-то ошибка случится)


Ответы (1 шт):

Автор решения: Максим К

Желательно, чтобы еще все работало, если сервер перезапустится (или там какая-то ошибка случится)

К сожалению, если нет менеджеров процессов (тот же супервизор), то очередь не надо делать.

Я запускал на shared хостинге очередь при помощи крона, своего .pid файла очереди и --once параметра очереди, но такая реализация - это костыль, который ломается при перезапуске сервака (к счастью на shared хостинге серваки не часто перезагружают).

Если интересно, можешь спросить в личку

→ Ссылка