Мы работали над программой PHP, и она наполовину исчерпывает память сервера.
Память, кажется, израсходована на ложную сторону if, но мы не знаем почему. В следующем примере показано, как выглядит код в соответствующей точке:
$memory = new MemoryUsageInformation(true);
$memory->setStart();
$a = 0;
for ($i=0; $i<8; $i++){
for ($y=1; $y<=50; $y++){
for ($m=1; $m<=12; $m++){
if ($a == 1){
echo 'Do I get here';
//30 + multidimensional arrays defined here.
}
$memory->setMemoryUsage('loop: '.$i.'.'.$y.'.'.$m);
}
}
}
$memory->setEnd();
$memory->printMemoryUsageInformation();
Time: 1412155564 | Memory Usage: 34.25 MB | Info: Initial Memory Usage
Time: 1412155564 | Memory Usage: 34.25 MB | Info: loop: 0.1.1
Time: 1412155564 | Memory Usage: 36.00 MB | Info: loop: 0.1.2
Time: 1412155564 | Memory Usage: 38.50 MB | Info: loop: 0.1.3
Time: 1412155564 | Memory Usage: 41.50 MB | Info: loop: 0.1.4
...
Time: 1412155564 | Memory Usage: 111.50 MB | Info: loop: 7.50.9
Time: 1412155564 | Memory Usage: 111.75 MB | Info: loop: 7.50.10
Time: 1412155564 | Memory Usage: 113.25 MB | Info: loop: 7.50.11
Time: 1412155564 | Memory Usage: 116.25 MB | Info: loop: 7.50.12
Time: 1412155564 | Memory Usage: 117.00 MB | Info: Memory Usage at the End
Когда мы закомментируем массивы, определяемые в операторе if, память не исчерпывается, и программа запускается.
Мы также попытались отобразить текст в if, чтобы увидеть, выполнено ли условие, но этот текст не был отражен.
Мы немного озадачены этим, есть ли у кого-нибудь идеи или предложения о том, где искать глубже?
Благодарю.
Задача ещё не решена.
Других решений пока нет …