Подтвердить что ты не робот

PHP: размер измерения в килобайтах объекта/массива?

  • Какой подходящий способ измерения фактический размер объектов PHP байт/килобайт?

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

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

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

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

4b9b3361

Ответ 1

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

$serializedFoo = serialize($foo);
if (function_exists('mb_strlen')) {
    $size = mb_strlen($serializedFoo, '8bit');
} else {
    $size = strlen($serializedFoo);
}

Ответ 2

Еще один простой способ передать содержимое массива в файл, а затем проверить размер файла.

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