Предположим, что есть сайт для объявлений, а уникальный URL-адрес для каждого продукта - это всего лишь номер: example.com/product/12345/
Теперь предположим, что каждое число дает результат другому продукту на странице, и сказать, что я хочу, чтобы сканировать все URL, и получить все данные от со страницы путем извлечения информации из бывших: <div id='info'>someinfo</div>
Теперь я пытался сделать это с чем-то вродеEffiecint способ обхода сайта
$URL = 1000;
for($i=1; $i < $URL; $i++){
$content = file_get_contents("http://example.com/products/$i");
$info = //get the exact info from div and
file_put_contents('file.txt', $info);
}
Даже если этот скрипт работает так или иначе, он не чтобы написать больше, чем первые 5 результатов, перед сбоем моей системы из-за ограничений памяти. Итак, я хотел бы знать, как это делается.
Я мог бы использовать объект DOM для получения содержимого divs, но реальная проблема заключается в том, как не иметь скрипта freez на странице.
Есть ли какие-либо решения?
Вы можете попробовать использовать библиотеку cURL. По моему мнению, это должно быть более эффективным, а затем использовать file_get_contents – falconspy
. Вы должны подумать о том, как долго выполняется один запрос. Выполнение 1000 запросов и их запись в файл сразу могут отменить ваш скрипт. – War10ck
Уверены ли вы, что у вас проблемы с памятью, а не на тайм-аут скрипта? Я не вижу ничего такого, что могло бы привести к утечке памяти, поэтому, если у вас достаточно памяти, выделенной для хранения '$ content', объекта DOM, который вы используете для получения' $ info' и '' info info, я бы думаю, что память не будет ограничением. Опять же, возможно, вы не замечаете что-то из своего примера кода, что может быть проблематичным. –