Причина для запроса:
Я использую memcached для хранения кеша в своем веб-приложении, которое будет использоваться нетехническими клиентами. Однако, поскольку memcached имеет максимальный размер 1mb , было бы здорово иметь функцию, созданную с самого начала, что я могу использовать для измерения размера выбранных объектов / массивов / наборов данных, чтобы они не увеличивались до больших.
Обратите внимание, что я планирую использовать это как средство оповещения / диагностики, чтобы отслеживать производительность кэша и возможности хранения с течением времени. Я предполагаю, что вычисление скорости на каждом вызове memcached set / add немного замедлит работу.
Я также знаю, что хранение больших наборов данных в memcached отнимает всю идею хранения вещей в ОЗУ, и именно поэтому я должен знать заранее, чтобы не допустить, чтобы клиенты строили большие массивы данных.
большое спасибо
Ну, поскольку Memcached не хранит необработанные объекты (на самом деле хранит версию serialiezd), вы можете сделать это:
$serializedFoo = serialize($foo); if (function_exists('mb_strlen')) { $size = mb_strlen($serializedFoo, '8bit'); } else { $size = strlen($serializedFoo); }
Еще один простой способ передать содержимое массива в файл, а затем проверить размер файла.
$str = print_r($array, true); file_put_contents('data.txt', $str); $size = filesize('data.txt');