[cronQueue] Очереди задач
Выполнение разнообразных задач кроном.
Зачем?
Есть у меня один проект, с автопереводом отзывов на несколько языков.
Русский, Английский, Китайский, Арабский и Немецкий, это один сайт на 5ти доменах, на каждом домене можно оставить отзыв и он переводится на остальные языки ну и отображается после этого на всех языках.
Изначально перевод осуществлялся в момент сохранения отзыва, с одним языком было не заметно, с двумя долго, с пятью — жесть. Поэтому решил все это дело повесить на крон, да и добавилось других задач: перевести ресурсы, перевести сео и контент на языки, пересчитать баллы за отзывы и тд.
Как работает?
Добавляем задачу
Все задачи хранятся в таблице cronqueue_tasks.
Все функции хранятся в core/components/cronqueue/model/cronqueue/default.php внутри класса functions.
В настройках можно сменить путь к файлу, настройка cronqueue_functions.
Можно запускать сниппеты $cronQueue->add($task, $data, 'snippet');
Ну и добавлять задачи можно из любых плагинов, сниппетов и тд.
Настройка крона
Для ежеминутного запуска, пути на основе modhost.pro
github.com/but1head/cronQueue
Зачем?
Есть у меня один проект, с автопереводом отзывов на несколько языков.
Русский, Английский, Китайский, Арабский и Немецкий, это один сайт на 5ти доменах, на каждом домене можно оставить отзыв и он переводится на остальные языки ну и отображается после этого на всех языках.
Изначально перевод осуществлялся в момент сохранения отзыва, с одним языком было не заметно, с двумя долго, с пятью — жесть. Поэтому решил все это дело повесить на крон, да и добавилось других задач: перевести ресурсы, перевести сео и контент на языки, пересчитать баллы за отзывы и тд.
Как работает?
Добавляем задачу
$cronQueue->add('translateReview', array('ru' => 'Текст отзыва'));
Далее крон берет задачу из бд и запускает функцию function translateReview($data). После запуска задача удаляется.Все задачи хранятся в таблице cronqueue_tasks.
Все функции хранятся в core/components/cronqueue/model/cronqueue/default.php внутри класса functions.
В настройках можно сменить путь к файлу, настройка cronqueue_functions.
Можно запускать сниппеты $cronQueue->add($task, $data, 'snippet');
Ну и добавлять задачи можно из любых плагинов, сниппетов и тд.
$cronQueue = $modx->getService('cronqueue','cronQueue', MODX_CORE_PATH . 'components/cronqueue/model/cronqueue/', array());
if(!$cronQueue) die('error load cronQueue');
$cronQueue->add('test', array('test' => 1));
Настройка крона
Для ежеминутного запуска, пути на основе modhost.pro
* * * * * php ~/www/core/components/cronqueue/model/cronqueue/worker.php
github.com/but1head/cronQueue
Комментарии: 13
Отправил в modstore за 190р
Кто любит бесплатно — можно скачать с гитхаба.
Кто любит бесплатно — можно скачать с гитхаба.
то что доктор прописал
Вот ещё для любителей бесплатного — cronManager.
Тоже бесплатно: www.modmore.com/extras/scheduler/
Интересный компонент, пара вещей не понравилась:
— зачем выбирать namespace? Если я хочу вызвать файл.
— После создания задачи нужно выставить ее тайминг
Мне нужно каждые 5 минут запускать задачу, задачи создаются в момент создания отзыва и тд. Можно было и без компонента обойтись, но решил поделиться, может кому-нибудь понадобится.
— зачем выбирать namespace? Если я хочу вызвать файл.
— После создания задачи нужно выставить ее тайминг
Мне нужно каждые 5 минут запускать задачу, задачи создаются в момент создания отзыва и тд. Можно было и без компонента обойтись, но решил поделиться, может кому-нибудь понадобится.
но решил поделиться, может кому-нибудь понадобитсяспасибо, чем больше готовых решений, тем лучше
sFileTask: Запускает PHP-файл, к которому устанавливается либо абсолютный путь,…
Прикольно, сколько искал ни одного решения не нашел :) Правда искал «modx queue»
я для очередей gearman установил)
К сожалению нет возможности его поставить на modhost, а другие хостинги забыл как страшный сон.
Да и переехал на modx с концами.
Да и переехал на modx с концами.
Доброго дня, а из модстора куда-то расширение cronQueue делось...?
Там всего-то пару загрузкок было, попросил отключить
Да, я в т.ч. загружал. А почему «попросил отключить», зачем?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.