1

Тема: cUrl парсер - Allowed memory size

Є код:

<html>
<head></head>
<body>
<?php
function browser($url) {
$url="https://site.com/page?p=1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<a class="qa_title_link" href="(.*?)">~is', browser($url), $text);
print implode('<br />', array_slice($text[1], 0, 20)); 
?>
</body></html>

Мені потрібно щоб в

$url="https://site.com/page?p=1";

?p=1 стало ?p=2 і так далі по сторінкам, а потім вивело загальний результат.

Мені запропонували замініти

$url="https://site.com/page?p=1";

на

for($i = 1;$i<=10;$i++){
$results[] = browser("https://site.com/page?p=$i");
}

Після цього виходить помилка

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 261904 bytes) in C:\OpenServer\OpenServer\domains\localhost\test.php on line 7

2

Re: cUrl парсер - Allowed memory size

В змінній $url було записано більше інформації чим дозволено в PHP. Спробуйте збільшити цей ліміт за допомого ini_set("memory_limit","256M").

Прихований текст

А взагалі правильно буде зробити, тобто не записувати вміст 10 сторінок в масив, а відразу виводити результат

Прихований текст

Чи хоча б в масиві тримати не сторінки, а спарсене посилання

<html>
<head></head>
<body>
<?php
function browser($id) {
$url="https://site.com/page?p=1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
for($i = 1;$i<=10;$i++){
$url = browser("https://site.com/page?p=$i");
preg_match_all('~<a class="qa_title_link" href="(.*?)">~is', browser($url), $text);
print implode('<br />', array_slice($text[1], 0, 20)); 
}

?>
</body></html>
Подякували: HetmanNet, 221VOLT2