[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
but1head
14 октября 2016, 18:54
modx.pro
4
3 079
+8

Комментарии: 13

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

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