Мой текущий код (см. Ниже) использует 147 МБ виртуальной памяти!
Мой провайдер выделил 100 МБ по умолчанию, и процесс завершается после запуска, что вызывает внутреннюю ошибку.
Код использует curl multi и должен иметь возможность выполнять цикл с более чем 150 итерациями, одновременно минимизируя виртуальную память. Код ниже установлен только на 150 итераций и по-прежнему вызывает внутреннюю ошибку сервера. На 90 итерациях проблема не возникает.
Как я могу настроить свой код, чтобы уменьшить использование ресурсов / виртуальную память?
Спасибо!
<?php
function udate($format, $utimestamp = null) {
if ($utimestamp === null)
$utimestamp = microtime(true);
$timestamp = floor($utimestamp);
$milliseconds = round(($utimestamp - $timestamp) * 1000);
return date(preg_replace('`(?<!\\\\)u`', $milliseconds, $format), $timestamp);
}
$url = 'https://www.testdomain.com/';
$curl_arr = array();
$master = curl_multi_init();
for($i=0; $i<150; $i++)
{
$curl_arr[$i] = curl_init();
curl_setopt($curl_arr[$i], CURLOPT_URL, $url);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, FALSE);
curl_multi_add_handle($master, $curl_arr[$i]);
}
do {
curl_multi_exec($master,$running);
} while($running > 0);
for($i=0; $i<150; $i++)
{
$results = curl_multi_getcontent ($curl_arr[$i]);
$results = explode("<br>", $results);
echo $results[0];
echo "<br>";
echo $results[1];
echo "<br>";
echo udate('H:i:s:u');
echo "<br><br>";
usleep(100000);
}
?>