У меня просто есть таблица SQL всех ссылок, которые я нашел, и были ли они проанализированы или нет.
Затем я использую Простой HTML DOM для анализа самой старой добавленной страницы, хотя, поскольку она имеет тенденцию исчерпывать память большими страницами (500 КБ + HTML), я использую регулярное выражение для некоторых из них *. Для каждой ссылки, которую я нахожу, я добавляю ее в базу данных SQL как нуждающуюся в анализе и в то время, когда я ее нашел.
База данных SQL предотвращает потерю данных при ошибке, и, поскольку у меня более 100 000 ссылок для анализа, я делаю это в течение длительного периода времени.
Я не уверен, но вы проверили useragent для file_get_contents ()? Если это не ваши страницы, и вы делаете тысячи запросов, вы можете изменить пользовательский агент, либо написав свой собственный HTTP-загрузчик, либо используя один из библиотеки (я использую один в Zend Framework), но cURL и т. Д. отлично работает Если вы используете пользовательский пользовательский агент, он позволяет администратору просматривать журналы, чтобы увидеть информацию о вашем боте. (Я склонен указывать причину, по которой я ползаю, и контакт в моем).
* Регулярное выражение, которое я использую:
'/<a[^>]+href="([^"]+)"[^"]*>/is'
Лучшее решение (от Гамбо) может быть:
'/<a\s+(?:[^"'>]+|"[^"]*"|'[^']*')*href=("[^"]+"|'[^']+'|[^<>\s]+)/i'