Не хочет работать системная очередь.

Не хочет работать системная очередь в авто режиме

#1 18 марта 2022 в 18:07

Привет. Вопрос кодерам. Добавил событие в системную очередь и не хочет запускаться. Очередь создаётся. В ручном режиме запускается и код выполняется. Но при этом в админке, в таблице очереди, статус у выполненного задания стоит Выполняется и постоянный ajax-loader при этом. Куда посмотреть?

#2 18 марта 2022 в 18:15

В старые добрые времена сталкивался с таким, и больше не использовал очередь.

Интересно будет посмотреть на поиски проблемы. Я бы начал с разбора задачи крон, которая выполняет отправку сообщений на основе системной очереди github.com/instantsoft/icms2/blob/master/system/controllers/queue/frontend.php

#3 18 марта 2022 в 18:28

Честно говоря была надежда, что где то не заметил какой нибудь хитрый параметр)))

#4 18 марта 2022 в 18:43

 Lora

С месяц назад была такая проблема. В очереди на рассылку писем стояло две сотни и никто не отправлялся.

Методы решения:

Включил отладку и стартанул задание хрона вручную, выдало ошибку, мол неизвестный элемент ['payload']['params'].

В файле \system\core\queue.php нашел функцию public static function runJob($job) и прямо после скобки { дописал 

if (empty($job['payload']['params'])){dump($job['payload']);}

Какие id оно выдавало — руками удалял из таблицы cms_jobs.

Потом долго-долго стартовал это задание из админки вручную, пока все письма не разослало.

Вот радости-то пользователям было получать письма двухмесячной давности...

#5 18 марта 2022 в 18:48

 Ris, в том то и дело, что нет ошибок. Где мог везде постарался посмотреть. И задание вручную выполняется. В таблице jobs всё пучком. Начало, выпонение, ошибок нет.

#6 18 марта 2022 в 18:53

 Lora

А остальные задания хрона нормально выполняются?

#7 18 марта 2022 в 19:02

Не знаю. Оба сайта тестовые. Один на локалке другой в сети.Но недавно делал проект, там тоже крон нужен был, но не эта задача, работало.

#8 18 марта 2022 в 19:09

 Lora

Ну хотя бы посмотреть в админке в планировщике, какие задания должны срабатывать, но давно не срабатывали, можете?

Или вручную все стартануть (со включенной отладкой, естественно).

Также проверьте, а версия php с которой запускается запускается хрон та же, как с которой сам сайт работает?

#9 18 марта 2022 в 19:19

Да, три задания недавно выполненные вижу.

Посмотрел код, как  Zau4man, посоветовал и вот, что вижу.

  1. array_unshift($item['payload']['params'], ($item['attempts'] + 1));

Подучается $item['attemps'], а это попытки, должны добавляться в параметры, а это json. У меня при выполнении не добавляются, но не это интересно. Зачем вообще они там нужны, когда для них есть отдельное поле?

#10 18 марта 2022 в 20:09

Кажется мне, что как-то неправильно Вы «добавили событие в системную очередь».

Вот тут описано, как надо:

docs.instantcms.ru/dev/integration/queue

#11 19 марта 2022 в 01:09

Кажется мне, что как-то неправильно Вы «добавили событие в системную очередь».

Ris

Из чего кажется?

Добавлено спустя Только что

Если бы не правильно, то и не добавилось бы. Наверное)

Добавлено спустя 2 минуты

Нет. Я думаю, что может  дело в том, что я запускаю событие из аякса. Сейчас буду проверять эту версию.

Добавлено спустя 4 часа

Короче на данный момент при запуске вручную, всё работает корректно.(Пришлось подкорректировать класс). Код выполняется, задание при этом из очереди удаляется. Единственное не понятно как задать разный приоритет. И надо ли это вообще. Но в авторежиме не работает. Но это уже наверное проблема крона. Завтра на хостинге попробую.

#12 20 марта 2022 в 01:20

Нашёл причину. Или следствие).  В автоматическом режиме крон не может прочитать файл, если в нём подключены другие классы.

#13 29 марта 2022 в 13:37

Нашёл причину. Или следствие).  В автоматическом режиме крон не может прочитать файл, если в нём подключены другие классы.

Lora

Привет. А можно по конкретнее про файл и подключенный в нем класс? У меня такая же проблема. Не работает емейл-рассылка. Заранее спасибо!

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.