У меня есть этот код:PHP memory_limit фатальная ошибка в array_search функции
<?php
header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ERROR | E_WARNING | E_PARSE & ~E_NOTICE);
$uarray = json_decode($_POST['array']);
$uac = $uarray;
$res = $uarray;
function request_callback($response, $info, $request) {
global $uac;
global $res;
$index = array_search($request->{'url'}, $uac);
$uac[$index] = " ";
$rspnc = json_decode($response);
$res[$index] = $rspnc;
}
require("RollingCurl.php");
$rc = new RollingCurl("request_callback");
$rc->options = array(CURLOPT_BINARYTRANSFER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false);
$rc->window_size = 5;
foreach ($uarray as $url) {
$request = new RollingCurlRequest($url);
$rc->add($request);
}
$rc->execute();
for($i = 0; $i <= count($res); $i++)
{
for ($j = 0; $j <= 1; $j++) {
echo $res[$i]->{'name'};
echo "/";
echo $res[$i]->{'quality'};
echo "/";
echo $res[$i]->{'buy_offers'}[$j]->{'o_price'};
echo "/";
echo $res[$i]->{'buy_offers'}[$j]->{'c'};
echo "/";
echo $res[$i]->{'buy_offers'}[$j]->{'my_count'};
echo "/";
echo $res[$i]->{'classid'}. "_" .$res[$i]->{'instanceid'};
echo "<br>";
}
echo "<p><p><p>";
}
?>
И им получить предел памяти ошибки в этой строке:
$index = array_search($request->{'url'}, $uac);
Массив $ uarray содержит 10000 ссылок. Я уже изменил значение memory_limit в php.in на -1. phpinfo(), отображающий значение memory_limit как -1. Поэтому я предполагаю, что ошибка произошла из-за 32-битного PHP и Apache. У меня есть 64-битные окна с 16 ГБ оперативной памяти. Так проблема в коде. Помогите мне переписать этот код, особенно функцию array_search, таким образом, чтобы исходный массив был нарезан и слит обратно. Извините за мой язык.
[ссылка] http://stackoverflow.com/questions/18942839/ php-understanding-memory-limit-error вы можете проверить это .. может быть, это поможет –
Вы также можете попробовать http://www.anindya.com/ Сначала я бы попробовал ссылку на сообщение от Tejas. – reporter