[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
14 октября 2016, 21:54    but1head   
3    724 +8

Комментарии (13)

  1. but1head 14 октября 2016, 21:57 # +2
    Отправил в modstore за 190р
    Кто любит бесплатно — можно скачать с гитхаба.
    1. Bluetenstadt 14 октября 2016, 23:41 # 0
      то что доктор прописал
      1. Сергей Шлоков 15 октября 2016, 07:31 # 0
        Вот ещё для любителей бесплатного — cronManager.
        1. Владимир 15 октября 2016, 08:38 # 0
          Тоже бесплатно: www.modmore.com/extras/scheduler/
          1. but1head 15 октября 2016, 17:02 # 0
            Интересный компонент, пара вещей не понравилась:
            — зачем выбирать namespace? Если я хочу вызвать файл.
            — После создания задачи нужно выставить ее тайминг

            Мне нужно каждые 5 минут запускать задачу, задачи создаются в момент создания отзыва и тд. Можно было и без компонента обойтись, но решил поделиться, может кому-нибудь понадобится.
            1. Владимир 15 октября 2016, 17:05 # 0
              но решил поделиться, может кому-нибудь понадобится
              спасибо, чем больше готовых решений, тем лучше
              1. Владимир 15 октября 2016, 17:08 # 0
                sFileTask: Запускает PHP-файл, к которому устанавливается либо абсолютный путь,…
            2. but1head 15 октября 2016, 16:49 # 0
              Прикольно, сколько искал ни одного решения не нашел :) Правда искал «modx queue»
          2. Пётр Молчанов 17 октября 2016, 10:17 # 0
            я для очередей gearman установил)
            1. but1head 17 октября 2016, 16:14 # 0
              К сожалению нет возможности его поставить на modhost, а другие хостинги забыл как страшный сон.
              Да и переехал на modx с концами.
            2. Владимир 22 мая 2017, 12:16 # 0
              Доброго дня, а из модстора куда-то расширение cronQueue делось...?
              1. but1head 22 мая 2017, 12:18 # 0
                Там всего-то пару загрузкок было, попросил отключить
                1. Владимир 22 мая 2017, 12:20 # 0
                  Да, я в т.ч. загружал. А почему «попросил отключить», зачем?
              Вы должны авторизоваться, чтобы оставлять комментарии.