PHP: Измерять размер в килобайтах объекта / массива? - PullRequest
18 голосов
/ 18 июня 2010
  • Как правильно измерить фактический размер объектов PHP в байтах / килобайтах?

Причина вопроса:
Я использую memcached для хранения кеша в моем веб-приложении, котороебудет использоваться нетехническими клиентами.Тем не менее, поскольку memcached имеет максимальный размер 1 МБ , было бы замечательно иметь функцию, настроенную с самого начала, которую я могу использовать для измерения размера выбранных объектов / массивов / наборов данных, чтобы предотвратить ихстановится все больше.

Обратите внимание, что я планирую использовать его только в качестве средства оповещения / диагностики, чтобы отслеживать производительность кэша и возможности хранения с течением времени.Я предполагаю, что вычисление скорости при каждом вызове установки / добавления в memcached немного замедлит работу.

Мне также известно о том, что хранение больших наборов данных в memcached отменяет саму идею хранения вещей в ОЗУ, и этоименно поэтому мне нужно знать заранее, чтобы не допустить наращивания клиентов до больших наборов данных.

Большое спасибо

Ответы [ 2 ]

31 голосов
/ 18 июня 2010

Ну, поскольку Memcached не хранит необработанные объекты (на самом деле он хранит версию serialiezd), вы можете сделать это:

$serializedFoo = serialize($foo);
if (function_exists('mb_strlen')) {
    $size = mb_strlen($serializedFoo, '8bit');
} else {
    $size = strlen($serializedFoo);
}
1 голос
/ 13 августа 2014

Другой простой способ передать содержимое массива в файл, а затем проверить размер файла.

$str = print_r($array, true);
file_put_contents('data.txt', $str);
$size = filesize('data.txt');
...