Я пытаюсь создать сервис, который будет собирать данные из сети через определенные промежутки времени, а затем анализировать эти данные, наконец, в результате анализа - выполнять специальные процедуры.Типичная схема запуска службы:
- Запросить обновление списка элементов до
- Загрузить данные перечисленных элементов
- Проверить, что еще не обновлено
- Обновление базы данных
- Фильтровать данные, содержащие обновления (получать только обновления с наивысшим приоритетом)
- Выполнить некоторые процедуры для анализа обновлений
- Фильтровать данные, содержащие обновления (получать только обновления со средним приоритетом)
- Выполните некоторые процедуры для разбора ... ... ...
Все было бы просто, если бы не так много данных для обновления.Необходимо обновить так много данных, что на каждом шаге от 1 до 8 (может быть, кроме 1) сценарии не будут работать из-за ограничения максимального времени выполнения 60 секунд.Даже если бы была возможность увеличить его, это было бы неоптимально, так как основная цель проекта - доставить данные с наивысшим приоритетом в первую очередь.Неудачное определение уровня приоритета информации основано на получении большинства всех данных и выполнении большого количества сравнений между уже сохраненными данными и входящими (обновляющими) данными.
Я мог бы отказаться от скорости обслуживания, чтобы получить хотя бы высокий приоритетобновления в обмен и ждите больше времени для всех остальных.Я думал о том, чтобы написать какой-нибудь родительский скрипт (менеджер), чтобы контролировать каждый шаг (1-8) службы, возможно, выполняя другие скрипты?Менеджер должен иметь возможность возобновить незаконченный шаг (сценарий), чтобы завершить его.Каждый шаг можно написать таким образом, чтобы он выполнял небольшую часть кода и после его завершения помечал эту небольшую часть работы как выполненную, например, в базе данных SQL.после возобновления работы менеджера step (script) будет продолжаться с момента, когда он был прерван сервером из-за превышения max exec.time.
Известные ограничения платформы: удаленный сервер, неизменяемое максимальное время выполнения, обычно ограничение на анализ одного сценария одновременно, отсутствие доступа ко многим функциям apache и все другие ограничения, характерные для удаленных серверов
Требования: какой-то тип менеджера является обязательным, поскольку помимо вызова определенных сценариев этот родительский процесс должен написать некоторые заметки о сценариях, которые активированы программным обеспечением.
Менеджер может быть вызван с помощью crul, достаточно одного минутного интервала.К сожалению, создание списка вызовов для каждого шага обслуживания здесь не вариант.
Я также рассматривал возможность получения нового удаленного хоста для каждого шага обслуживания и управления им с помощью другого удаленного хоста, который мог бы их вызывать, ипопросить выполнить свою работу, используя, например, SOAP, но этот сценарий находится в конце моего списка желаемых решений, потому что он не решает проблему максимального времени выполнения и обеспечивает большой объем обмена данными по глобальной сети, ведь это самый медленный способ работы с данными..
Есть мысли о том, как реализовать решение?