Я пытаюсь получить память, используемую всем приложением, на случай, если позади были запрошены параллельные запросы или какой-то cronjob.
Из документа PHP я нашел:
memory_get_usage ([ bool $real_usage = FALSE ] ) : int
memory_get_peak_usage ([ bool $real_usage = FALSE ] ) : int
Я проверил эти функции следующим образом:
Я создал два php-файла, которые содержат нижеприведенные скрипты:
//app.php
<?php
$startMemory = memory_get_peak_usage()/1024;
echo "memory before script : ".$startMemory. "bytes <br>";
$array = new SplFixedArray(10000000);
for ($i = 0; $i < 10000000; ++$i) {
$array[$i] = $i;
}
$endMemory = (memory_get_peak_usage()/1024);
$scriptMemory = $endMemory - $startMemory;
echo " memory after script : ". $endMemory. ' bytes <br>';
echo " script memory : ". $scriptMemory. ' bytes';
И второй:
//app2.php
<?php
$startMemory = memory_get_peak_usage()/1024;
echo "memory before script : ".$startMemory. "bytes <br>";
$array = new SplFixedArray(100000);
for ($i = 0; $i < 100000; ++$i) {
$array[$i] = $i;
}
$endMemory = (memory_get_peak_usage()/1024);
$scriptMemory = $endMemory - $startMemory;
echo " memory after script : ". $endMemory. ' bytes <br>';
echo " script memory : ". $scriptMemory. ' bytes <br>';
Смысл в том, чтобы app.php запускал скрипт, который может
время, а затем выполните app2.php, чтобы увидеть, если
$ startMemory в app2.php больше, чем $ startMemory в app.php.
но, к сожалению, это не так.
Результаты:
//app.php
memory before script : 387.9921875bytes
memory after script : 156640.234375 bytes
script memory : 156252.2421875 bytes
app2.php
memory before script : 386.4453125bytes
memory after script : 1950.6328125 bytes
script memory : 1564.1875 bytes
Вообще говоря, это похоже на получение используемой памяти реальным сценарием, а не на то, чтобы использовать память, используемую другими.