Есть ли способ получить размер переменной PHP в байтах?

В настоящее время у меня есть PHP CLI-скрипт с использованием Zend Framework, который, как кажется, использует все больший объем памяти. Он перемещается по большому набору моделей, полученных из базы данных в партиях по 1000. Вызовы memory_get_usage() показывают, что использование памяти в скрипте всегда увеличивается.

Это несмотря на то, что я не могу отменить модель после каждой итерации и фактически использовать array_shift() чтобы уменьшить размер массива моделей на каждой итерации.

Мой вопрос в том, что в PHP есть способ обнаружить размер в памяти переменной, чтобы я мог отслеживать, что растет?

Related of "Есть ли способ получить размер переменной PHP в байтах?"

У меня нет решения для проверки размера каждой переменной, но если вы используете доктрину, то это, вероятно, причина

вам нужно использовать

  $Elem->free(true); 

Другое дело – обновить до 5.3 (если вы еще этого не сделаете), сборщик мусора 5.3 лучше

Нет. Вероятно, вы ищете память, которая не освобождена, например, вы отсоединили переменную или удалили ссылку, а сборщик мусора еще не выпустил связанный блок в памяти.

Вы можете попробовать Zend Server 5 (вам нужна коммерческая версия) для mem-profile вашего приложения. Он имеет отслеживание кода . Я не знаю, может ли это позволить вам обнаружить утечки памяти.

Также см:

  • Что нового в PHP V5.2, часть 1: Использование нового диспетчера памяти
  • Memtrack (PECL)

Я не знаю, насколько это точно, но я получил число, используя apc_add('variable_name', $var); , Затем я apc.php к apc.php в записи пользовательского кэша и просматриваю столбец размера.

Разумеется, для этого вам необходимо установить и запустить APC. 🙂

Вот фрагмент кода, который я нашел в Weberdev

 <?php function array_size($a){ $size = 0; while(list($k, $v) = each($a)){ $size += is_array($v) ? array_size($v) : strlen($v); } return $size; } ?> 

Он получает размер данного массива в байтах. Это то, что вы имели в виду?