PHP: размер измерения в килобайтах объекта/массива?
- Какой подходящий способ измерения
фактический размер объектов PHP
байт/килобайт?
Причина для запроса:
Я использую memcached для хранения кеша в своем веб-приложении, которое будет использоваться нетехническими клиентами. Однако, поскольку memcached имеет максимальный размер 1mb, было бы здорово иметь функцию, созданную с самого начала, которую я могу использовать для измерения размер выбранных объектов/массивов/наборов данных, чтобы они не увеличивались до больших.
Обратите внимание, что я планирую использовать это как средство оповещения/диагностики, чтобы отслеживать производительность кэша и возможности хранения с течением времени. Я предполагаю, что вычисление скорости на каждом вызове memcached set/add немного замедлит работу.
Я также знаю, что хранение больших наборов данных в memcached отнимает всю идею хранения вещей в ОЗУ, и именно поэтому мне нужно знать заранее, чтобы не допустить создания клиентами больших наборов данных.
Спасибо большое
Ответы
Ответ 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');