Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.06.2018 21:00:35

Почему не срабатывает отложенное задание из очереди redis?

Использую OpenServer со следующими настройками:
HTTP: Apache php-7
PHP: php-7.0
Mysql 5.7
Redis 3.2

Установлен "laravel/framework": "5.5.*"

Это в контроллере

        $job = (new GetGuestInfo())->delay(Carbon::now()->addMinutes(1))->onConnection('redis');
        dispatch($job);

Также пробовал убрать onConnection('redis')
И так пробовал

$date = Carbon::now()->addMinutes(1);
        Queue::later($date, new GetGuestInfo());

Это в .env

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis

Таблица jobs добавлена через миграции

Это установил через композер
"predis/predis": "^1.1",

Это в queue.php

'default' => env('QUEUE_DRIVER', 'redis'),
'connections' => [
        ...
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => 'default',
            'retry_after' => 90,
        ],

    ],

В самом задании GetGuestInfo.php

.......
public function __construct()
    {
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $allData = new All();
        $allData -> name = "";
        $allData -> email = "";
        $allData -> position = "";
        $allData -> message = "";
        $allData -> ip = "ip";
        $allData -> country = "country";
        $allData -> department = "department";
        $allData -> city = "city";
        $allData -> index = "index";
        $allData -> lattitude = "lattitude";
        $allData -> longitude = "longitude";
        $allData -> timezone = "2";
        $allData -> useragent = "userAgent";
        $allData -> isDesktop = "isDesktop";
        $allData -> isMobile = "isMobile";
        $allData -> isTablet = "isTablet";
        $allData -> BrowserVersion = "browser";
        $allData -> MobileOS = "device";
        $allData -> MobileOS = "device";
        $allData->DesktopOS = "platform";
        $allData -> save();
    }

При переходе на главную страницу срабатывает экшн контроллера, где назначается это задание. Страница загружается, проходит минута, но задание не срабатывает. Подскажите что я не учел? Использовал эту инструкцию https://laravel.ru/docs/v5/queues , но как минимум там ничего не сказано о том, что нужно что-то менять в .env . Возможно там неполная инструкция + кривые руки.

Изменено Antuan (20.06.2018 21:16:07)

Не в сети

#2 20.06.2018 21:47:40

Re: Почему не срабатывает отложенное задание из очереди redis?

Для наглядности попробуй database драйвер, раз таблица все равно создана (чтобы вручную в редис не ходить). Табличка jobs должна наполняться строчками, 1 строка - 1 отложенная команда.
И проверь ларавел логи.

(я надеюсь ты сам воркер запустил)

Изменено covobo (20.06.2018 21:48:07)

Не в сети

#3 20.06.2018 22:24:01

Re: Почему не срабатывает отложенное задание из очереди redis?

(я надеюсь ты сам воркер запустил)

В точку! Я не правильно понял значение команды queue:work. Я думал, его нужно запускать если хочешь наглядно увидеть работу воркера не дожидаясь установленного времени. Только походу без супервизора мне не обойтись. Странно, что РЕДИС в опенсервере есть, а супервизора нет. Сейчас буду разбираться как ставить супервизор на винду или в опенсервер.

Не в сети

#4 20.06.2018 22:27:18

Re: Почему не срабатывает отложенное задание из очереди redis?

Для наглядности попробуй database драйвер

А можно не возиться с установкой redis На удаленной машине, а просто использовать database драйвер? Так тоже работает. Или здесь есть какие-то недостатки по сравнению с редисом? Резонный вопрос, т.к. БД уже и так установлена, а РЕДИС еще придется ставить на убунту. Зачем делать больше )))

Изменено Antuan (20.06.2018 22:35:46)

Не в сети

#5 20.06.2018 23:19:53

Re: Почему не срабатывает отложенное задание из очереди redis?

А можно не возиться с установкой redis На удаленной машине, а просто использовать database драйвер? Так тоже работает. Или здесь есть какие-то недостатки по сравнению с редисом? Резонный вопрос, т.к. БД уже и так установлена, а РЕДИС еще придется ставить на убунту. Зачем делать больше )))

Я по умолчанию использую database, ухожу в редис или куда-то еще - если того требует ситуация. Пробежаться по бд и посмотреть что там с джобами легче и приятней, чем возиться с редисом.

Не в сети

Подвал раздела