В PHP - обнаружение изменений во внешней базе данных сайта
Для домашнего задания я создаю веб-сайт на PHP, основной функцией которого является агрегирование новостей о различных университетских курсах. Основная проблема заключается в следующем: (почти) каждый курс имеет свой собственный сайт. Они обычно просто HTML или построены с использованием какой-то простой бесплатной системы CMS. Как студент, участвующий в 6-7 курсах, почти каждый день вы проходите через 6-7 сайтов, проверяя, есть ли какие-либо новости. Идея проекта заключается в том, что вам не нужно этого делать, вместо этого вы просто проверяете сайт агрегации.
Моя идея заключается в следующем: каждый раз, когда студент входит в систему, просматривайте его список курсов. Для каждого курса, получить его веб-сайт (рекурсивно, как с wget), и создать его хэш-значение. Если хэш отличается от того, который хранится в базе данных, мы знаем, что сайт изменился, и уведомляем студента.
Итак, как вы думаете, является ли это разумным способом достижения функциональности? И если да, то как (технически) лучше всего это сделать? Я проверял php_curl, поставьте я не знаю, Может ли он получить сайт рекурсивно.
Кроме того, есть небольшая проблема, у меня есть несколько ограниченных ресурсов, всего несколько МБ квоты на публичном (университетском) сервере. Однако, если это большая проблема, я мог бы использовать отдельное решение хостинга.
Спасибо :)
1 ответ:
Просто используйте
file_get_contents
, или cURL, Если вам это абсолютно необходимо (в случае, если вам нужны куки).Вы можете использовать свой трюк хэширования, чтобы проверить наличие изменений, но это не очень элегантно. Вы хотите знать, когда это было в последний раз изменено . Я сомневаюсь, что эта информация есть на веб-сайте, но, возможно, они предлагают RSS-канал или какой-то веб-сервис или API, который вы можете использовать для этой цели.
Не беспокойтесь о выполнении рекурсивных запросов. Просто делайте новый запрос каждый раз.
"Когда все остальное терпит неудачу, постройте скребок "