IP.Board: алгоритм запуска задач по расписанию - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

задачи

Страница 1 из 1

IP.Board: алгоритм запуска задач по расписанию

#1 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 28 Март 2015 - 20:50

Как IP.Board реализует механизм выполнения сервисных задач по расписанию ?

С кроном всё понятно. Но IP.Board запускает задачи через собственный механизм.

Как я делал у себя на сайте: в основном скрипте (который не должен ждать долгих операций) асинхронно вызываю wget, которому передаю адрес служебного скрипта (выполняющего длительные операции). В итоге основной скрипт не ждёт завершения команды wget, а служебный скрипт в отдельном потоке работает сколько нужно.

Как это реализовано в IP.Board ?
0

#2 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 271
  • Регистрация: 20-Март 09
  • Репутация: 2 077
  • IPB version:3.1.x
 

Отправлено 28 Март 2015 - 21:08

Просмотреть сообщениеcyrax_02 сказал(а):

Как IP.Board реализует механизм выполнения сервисных задач по расписанию ?

Как и во всех кмс, при заходе пользователя на форум запускается функция отвечающая за обработку задач, она смотрит какие задачи нуждаются в запуске и запускает их. В IPB она запускается при запросе браузером адреса, который прописан в исходном коде как изображение, таким образом достигается эффект "асинхронности". Здесь никаких новых решений нет, сделано просто, чтобы не было проблем с запуском задач.
Для массового приложения выбор особо не большой - или дергать из браузера, или через сокеты создать новый сокет, отправить запрос и закрыть его не дожидаясь результата.

В коде страницы это изображение можно найти как (в зависимости когда будет запуск следующей задаче по task_next_run)

<img src='http://site.ru/index.php?app=core&amp;module=task' alt='' style='border: 0px;height:1px;width:1px;' />

1

#3 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 28 Март 2015 - 22:08

Хитро придумали. Правда, этот способ не будет работать при удалённом выполнении операций (когда от сервера нужно получить определённый ответ без рендеринга полученного содержимого), но для форума такие ситуации исключены.

Вариант хорош тем, что не требует запуска никаких утилит ОС (полностью самодостаточный и независимый вариант). Но выглядит не совсем красиво (похож на заплатку).
0

#4 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 271
  • Регистрация: 20-Март 09
  • Репутация: 2 077
  • IPB version:3.1.x
 

Отправлено 28 Март 2015 - 22:17

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


Просмотреть сообщениеcyrax_02 сказал(а):

Но выглядит не совсем красиво (похож на заплатку).

Самый оптимальный вариант (если говорить о универсальности). Остальные еще больше на костыли похожи.
0

#5 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 29 Март 2015 - 11:07

Цитата

Самый оптимальный вариант (если говорить о универсальности).

Оптимальный для независимых third-party-движков (CMS, форумы).

Всё-таки на каждый запрос веб-страницы приходится ещё один запрос, сопровождающийся инициализацией движка (как минимум, загрузка классов базовой объектной модели). А это дополнительные затраты памяти, ресурсов процессора и файловой системы. Поэтому, в случае, когда используется выделенный сервер или VPS, для выполнения собственных задач лучше воспользоваться кроном.
0

#6 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 271
  • Регистрация: 20-Март 09
  • Репутация: 2 077
  • IPB version:3.1.x
 

Отправлено 29 Март 2015 - 17:57

Это изображение появляется в исходном коде только тогда, когда нужно запустить очередную задачу, она не присутствует там постоянно. Крон однозначно лучше если нужна точность выполнения, но с ним много мороки нужно иметь доступ и правильно настроить.
0

#7 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 29 Март 2015 - 18:19

Цитата

Это изображение появляется в исходном коде только тогда когда нужно запустить очередную задачу

Один лишний запрос к БД ?

Цитата

...но с ним много мароки.

А именно ?
0

#8 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 271
  • Регистрация: 20-Март 09
  • Репутация: 2 077
  • IPB version:3.1.x
 

Отправлено 29 Март 2015 - 18:24

Просмотреть сообщениеcyrax_02 сказал(а):

Один лишний запрос к БД ?

task_next_run - время запуска следующей задаче, находится в кэше.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна