Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Php jobs (cron), Гибкая настройка php jobs 
:(
    Опции темы
BuShaRt
Дата 14.1.2013, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Всем доброго времени суток. 

Есть проект, концепция которого подразумевает выполнения достаточно больших объемов работы в автоматическом режиме. Последовательность и частота выполнения задач имеет свою внутреннюю логику, более сложную чем "выполнять каждые N минут".

Изначально мы просто создавали отдельные скрипты на каждый необходимый промежуток времени и в них вызов необходимых процессов. На пример daily, hourly, two-hour и т.п. Крон эти скрипты запускал согласно их названию на пример hourly каждый час.

Этот подход изначально мне не очень нравился, а сейчас с ним начинают возникать проблемы. Он не поддерживает возможности смены частоты запуска процессов из конфигурационного файла или на пример динамического изменения частоты запуска процессов (когда нам необходим контроль нагрузки на разные процессы). Главной проблемой является именно не возможность смены частоты запуска процессов через конфиг.

Тут у меня возникла идея реализации внутреннего механизма обработки задач на PHP. Мы бы могли иметь определенный стек задач и скрипт который запускается каждую минуту (старым добрым кроном). Этот скрипт проверяет стек, собирает список задач и приступает к их выполнению. Само собой стек хранит информацию о последнем выполнение задачи и интервале выполнения.

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

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

Кто, что думает по этому вопросу? Может кто видел примеры реализации или более успешные концепции?
PM MAIL   Вверх
Addmin
Дата 14.1.2013, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



BuShaRt, мне кажется, ваши сомнения беспочвенны smile Отсутствие примеров реализации в интернете ещё не значит, что так никто не делал. Может, просто не придавали значения.

На самом деле, все высоконагруженки больше стараются использовать "демоны" и "службы", написанные на нескриптовых языках,  для постоянного отслеживания параметров. И если у вас в команде есть кто-то, кто может быстро и хорошо написать утилиту, обслуживающую ваш backend, то стоит так и поступить. Но если php является для вас приоритетным языком и технология взаимодействия между разными приложениями вы представляете плоховато, то ежемитнуое выполнение обслуживающего скрипта - это то, что нужно. Просто слежение будет более дискретным smile


--------------------
PM MAIL   Вверх
Addmin
Дата 14.1.2013, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15





--------------------
PM MAIL   Вверх
BuShaRt
Дата 14.1.2013, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Addmin, Тут основная проблема в том, что бизнес логика инкапсулированна в PHP моделях. Процессы, запускаемые время от времени работают с этими моделями. Выходит, что если я буду описывать эти скрипты не на PHP, то мне придется дублировать бизнес логику. Я прав?
PM MAIL   Вверх
Addmin
Дата 14.1.2013, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Ну, процессы могут логировать результаты своих действий и сохранять их в какой-либо источник - базу там или текстовые файлы. Утилита может отслеживать их изменения и, если на основе этих данных можно принять решения о приоритете и запуске процессов, то в утилите есть смысл.

Если же и вправду придётся переносить всю логику - то повторяющийся управляемый скрипт и вправду лучший выход smile 


--------------------
PM MAIL   Вверх
Sanchezzz
Дата 14.1.2013, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Очень давно такую штуку делал 
Штука полезная позволяет быстро настроить через интерфейс нужные задачи указав что запустить и когда. Также меньше висячих процессов которые отслеживают каждый крон в задаче.  

Единственна сложность это запуск параллельно 2 и более скриптов. я делал тогда это спомощью Curl тогда еще незнал что есть multy_curl =)
Также нужно учитывать блокировки запуска на уровне выполняемого скрипта.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aliance
Дата 14.1.2013, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Более того скажу, highload-проект, где я работаю, использует механизм шаренной очереди и довольно успешно.
PM MAIL WWW ICQ Skype   Вверх
BuShaRt
Дата 14.1.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(Aliance @  14.1.2013,  13:45 Найти цитируемый пост)
 шаренной очереди

Впервые слышу этот термин. Что это значит? 
PM MAIL   Вверх
Aliance
Дата 14.1.2013, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Шаренная очередь (от shared queue) - динамическая структура данных, организованных по принципу FIFO. Мы ее используем для тех операций, которые:
а) тяжеловесны
б) не обязательны к выполнению immediately

Например: при загрузке аватарки, нужно создать еще 6 уменьшенных копий для различных разделов.

Такими рутинами заполняется очередь, потом по крону делается лок, берутся записи, выполняются, очередь очищается и снимается лок. Как-то так.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.