Цитата:
get_feeds.php - собственно получение свежих данных, работает порядка 2-3 мин, потому что парсит большие (~100-200 Мб) xml-файлы. Желательно делать это каждый 2-3 мин, т.к. данные динамично обновляются и REST-сервис должен отдавать самые свежие данные, но сейчас делаю раз в 10 мин, иначе возникают проблемы, которые я опишу чуть ниже...
update_feeds_alias.php - т.к. соединение данных происходит по текстовым аббревиатурам - этот скрипт проверят базу аббревиатур и дописывает те, что еще нет в БД для каждого источника xml-данных. Делается 2 раза в час, т.к. не так уж и часто появляются новые псевдонимы (делается порядка 15-20 мин., т.к. база псевдонимов по каждому источнику данных уже порядка 60к строк, плюс идет полнотекстовый поиск, а не выборка по какому-то айдишнику)
aggregate.php - собственно сам процесс выявления идентичных строк со всех источников и соединение их под один псевдоним (который сопоставили операторы). По идее должен происходить сразу же после того, как были получены распарсены xml-данные, но делается тоже по крону ибо процесс долгий.
add_redy_events.php - это скрипт выявляет только идентичные строки со всех источников и пишет их в БД, таким образом, что бы в последствии к этим строкам можно было обращаться по нашему уникальному айдишнику. Должен делаться тоже после того, как получены xml-данные.
update_cfs_to_redy_events.php - это собственно скрипт для обновления инфы по выявленным строкам для каждого источника данных
get_feeds.php - собственно получение свежих данных, работает порядка 2-3 мин, потому что парсит большие (~100-200 Мб) xml-файлы. Желательно делать это каждый 2-3 мин, т.к. данные динамично обновляются и REST-сервис должен отдавать самые свежие данные, но сейчас делаю раз в 10 мин, иначе возникают проблемы, которые я опишу чуть ниже...
update_feeds_alias.php - т.к. соединение данных происходит по текстовым аббревиатурам - этот скрипт проверят базу аббревиатур и дописывает те, что еще нет в БД для каждого источника xml-данных. Делается 2 раза в час, т.к. не так уж и часто появляются новые псевдонимы (делается порядка 15-20 мин., т.к. база псевдонимов по каждому источнику данных уже порядка 60к строк, плюс идет полнотекстовый поиск, а не выборка по какому-то айдишнику)
aggregate.php - собственно сам процесс выявления идентичных строк со всех источников и соединение их под один псевдоним (который сопоставили операторы). По идее должен происходить сразу же после того, как были получены распарсены xml-данные, но делается тоже по крону ибо процесс долгий.
add_redy_events.php - это скрипт выявляет только идентичные строки со всех источников и пишет их в БД, таким образом, что бы в последствии к этим строкам можно было обращаться по нашему уникальному айдишнику. Должен делаться тоже после того, как получены xml-данные.
update_cfs_to_redy_events.php - это собственно скрипт для обновления инфы по выявленным строкам для каждого источника данных
Уф. Вроде все описал конспиративно) Так вот, в чем проблема, вся эта херня должна работать очень быстро, все эти скрипты берут исходные данные, модифицируют их для дальнейшей стадии обработки сохраняя их в промежуточные таблицы БД, т.к. в оперативки все это держать не реально, а следующий скрипт уже берет модифицированные данные и еще больше их модифицирует. В общем такая вот сложная цепочка обработки происходит, с хранением промежуточных итогов вычисления в промежуточных таблицах.
В чем собственно проблема: если весь этот алгоритм работает раз в 10 мин, то все норм, но если увеличить периодичность этого пересчета и парсинга, то сервер начинает загибаться, т.к. еще не успел отработать один экземпляр скрипта, как крон запускает его еще раз и еще раз, в итоге получается каша, а все скрипты должны работать строго в заданном порядке. Пробую решить эту задачу через GEARMAN и SUPERVISOR (для управления воркерами), но чувствую я, что эти вещи не для этих целей предназначены, а может это просто я тупой и не до конца разобрался в мат.части серверов очередей. Может опытное сообщество моего любимого форума подскажет мне как навести порядок в этой цепочке?