Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Использую 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)
Не в сети
Для наглядности попробуй database драйвер, раз таблица все равно создана (чтобы вручную в редис не ходить). Табличка jobs должна наполняться строчками, 1 строка - 1 отложенная команда.
И проверь ларавел логи.
(я надеюсь ты сам воркер запустил)
Изменено covobo (20.06.2018 21:48:07)
Не в сети
(я надеюсь ты сам воркер запустил)
В точку! Я не правильно понял значение команды queue:work. Я думал, его нужно запускать если хочешь наглядно увидеть работу воркера не дожидаясь установленного времени. Только походу без супервизора мне не обойтись. Странно, что РЕДИС в опенсервере есть, а супервизора нет. Сейчас буду разбираться как ставить супервизор на винду или в опенсервер.
Не в сети
Для наглядности попробуй database драйвер
А можно не возиться с установкой redis На удаленной машине, а просто использовать database драйвер? Так тоже работает. Или здесь есть какие-то недостатки по сравнению с редисом? Резонный вопрос, т.к. БД уже и так установлена, а РЕДИС еще придется ставить на убунту. Зачем делать больше )))
Изменено Antuan (20.06.2018 22:35:46)
Не в сети
А можно не возиться с установкой redis На удаленной машине, а просто использовать database драйвер? Так тоже работает. Или здесь есть какие-то недостатки по сравнению с редисом? Резонный вопрос, т.к. БД уже и так установлена, а РЕДИС еще придется ставить на убунту. Зачем делать больше )))
Я по умолчанию использую database, ухожу в редис или куда-то еще - если того требует ситуация. Пробежаться по бд и посмотреть что там с джобами легче и приятней, чем возиться с редисом.
Не в сети