Если у меня есть следующая переменная в PHP:
$Message='Hello, this is just test message';
Как я могу получить размер его содержимого в байтах? Например, чтобы напечатать что-то вроде:
<p>Message size is 20KB</p>
$start_memory = memory_get_usage(); $foo = "Some variable"; echo memory_get_usage() - $start_memory;
Это хорошо, если вы работаете с любым типом var.
strlen
возвращает количество байтов в строке, а не длину символа. Просмотрите руководство по PHP здесь .
Посмотрите внимательно:
Заметка:
strlen () возвращает количество байтов, а не количество символов в строке.
Если вы берете результат и несколько на 8, вы можете получить бит.
Вот функция, которая может легко выполнить математику для вас.
function strbits($string){ return (strlen($string)*8); }
Обратите внимание , что если вы используете memory_get_usage()
, вы получите неверное значение. Память – это объем памяти, выделяемый скриптом PHP. Это означает, что в его синтаксическом анализаторе выделяется память для строки и значения строки. В результате значение этого параметра до и после установки var будет выше ожидаемого.
Пример: строка: Hello, this is just test message
, выдает следующие значения:
Memory (non-real): 344 bytes Strlen: 32 Bytes Strlen * 8bits: 256 bits
Вот код:
<?php $mem1 = memory_get_usage(); $a = 'Hello, this is just test message'; echo "Memory (non-real): ". (memory_get_usage() - $mem1)."\n"; echo "Strlen: ". strlen($a)."\n"; echo "Strlen * 8bits: ". (strlen($a) * 8),"\n";
Символ – один байт, поэтому просто проверьте длину строки. Разделите на 1024, если вам это нужно в KB (будьте готовы к десятичной).
<?php echo "Message size is ".strlen($Message)."B"; ?>
strlen()
возвращает количество байтов в строке.
Вы должны использовать функцию длины строки:
strlen($Message)
Вы также должны проверить руководство по php: http://php.net/manual/en/function.strlen.php