[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.phpgithub.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 делось...?            
                    
                Там всего-то пару загрузкок было, попросил отключить            
                    
                Да, я в т.ч. загружал. А почему «попросил отключить», зачем?            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.