В настоящее время я работаю над приложением, которое собирает информацию о борзых с гоночного сайта и выполняет ряд вычислений на основе данных. Текущему приложению удается правильно отображать данные и выполнять правильные расчеты, выполняя индивидуальные запросы YQL на гоночном веб-сайте на основе ввода пользователей.
Однако я обнаружил, что из-за большого количества HTTP-вызовов и отсутствия кэширования данных приложение имеет тенденцию быть немного медленным. Чтобы ускорить его и открыть возможность дальнейшего анализа данных, я хотел бы создать какую-то систему, которая будет очищать и хранить все данные, относящиеся к дню накануне вечером, через вкладку cron. Однако я не уверен, как это сделать.
В данный момент приложение проходит следующий грубый процесс:
- Разрешить пользователю выбирать дату
- Выполнить запрос YQL и выполнить итерацию по результату, чтобы получить все расы в эту дату
- Разрешить пользователю выбирать расу из списка выше
- Выполните YQL-запрос и переберите результат, чтобы получить всех собак в гонке
- Выполните YQL-запрос и переберите результат, чтобы получить все расы, выполняемые каждой собакой
- Рассчитать статистику на основе рас, проведенных каждой собакой
- Вывести все
Как видите, существует довольно много отдельных HTTP-запросов. Это неизбежно, поскольку каждый набор данных существует на отдельной странице гоночного веб-сайта. По этой причине я бы предпочел получить большую часть обработки через отдельную систему и хранить данные в базе данных, а не собирать и обрабатывать их по запросу пользователя.
Я мог бы легко извлечь процесс извлечения и вычисления из текущей системы и просто запустить их на вкладке cron, но все они будут выполняться из одного PHP-запроса. Это означает, что сервер должен будет перебирать буквально тысячи фрагментов данных, сохраняя каждый набор в базе данных, все в рамках одного запроса PHP. Не попробовав, я бы предположил, что время ожидания запроса истекло?
Итак, подведем итог, вот мои вопросы:
- Если бы я поместил обработку в один PHP-файл и запустил ее из cron, закончится ли тайм-аут перед завершением работы или он просто продолжит пахать?
- Существует ли какая-либо ранее существующая библиотека, которая занимается такой задачей?
- Есть мысли об альтернативных способах достижения этого?
Большое спасибо,
Dan