Hướng dẫn size of variable in php - kích thước của biến trong php

strlen Trả về số byte trong chuỗi, không phải độ dài ký tự. Xem hướng dẫn sử dụng PHP ở đây.

Nhìn kỹ vào:

Note:

strlen () trả về số byte thay vì số lượng ký tự trong một chuỗi.

Nếu bạn lấy kết quả và nhiều vào 8, bạn có thể nhận được bit.

Đây là một chức năng có thể dễ dàng làm toán cho bạn.

function strbits($string){
    return (strlen($string)*8);
}

Lưu ý, nếu bạn sử dụng,

Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
0, bạn sẽ trả về giá trị sai. Bộ nhớ sử dụng là lượng bộ nhớ được phân bổ bởi tập lệnh PHP. Điều này có nghĩa là, trong trình phân tích cú pháp của nó, nó là phân bổ bộ nhớ cho chuỗi và giá trị của chuỗi. Kết quả là, giá trị của điều này trước và sau khi đặt VAR, sẽ cao hơn dự kiến., if you use,
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
0, you will have the wrong value returned. Memory get usage is the amount of memory allocated by the PHP script. This means, within its parser, it is allocating memory for the string and the value of the string. As a result, the value of this before and after setting a var, would be higher than expected.

Ví dụ, chuỗi:

Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
1, tạo các giá trị sau:

Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits

Đây là mã:

PHP VAR_SIZEOF ()

Chức năng để có được kích thước của bất kỳ biến PHP trong byte. Nó phải là công cụ chính xác hơn để tính tổng kích thước của biến PHP so với

Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
0, nhưng nó có các hạn chế.
It must be more accurate tool to calculate total size of PHP variable than
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
0, but it has restrictions.

Làm thế nào nó hoạt động

Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
3 với
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
4 sử dụng FFI để truy cập các cấu trúc bên trong của các biến PHP. Nó tính toán kích thước của các cấu trúc bên trong như
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
5,
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
6,
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
7, v.v., cũng như bộ nhớ được phân bổ bổ sung cho chúng. Nó không tính toán bộ nhớ của trình xử lý/chức năng/vv.
It calculates the size of internal structures such as
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
5,
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
6,
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
7, etc., as well as additional allocated memory for them.
It doesn't take into calculate the memory of handlers/functions/etc.

Yêu cầu

  • PHP> = 7.4 (với FFI)
  • Linux (x86_64) / darwin (x86_64)

Cài đặt thế nào

composer require mrsuh/php-var-sizeof

Chức năng

int var_sizeof(mixed $var);

int var_class_sizeof(mixed $var);

Cách sử dụng



require_once __DIR__ . '/vendor/autoload.php';

$int = 1;
printf("variable \$int size: %d bytes\n", var_sizeof($int));

$array = array_fill(0, 100, $a);
printf("variable \$array size: %d bytes\n", var_sizeof($array));

$object = new \stdClass();
printf("variable \$object size: %d bytes\n", var_sizeof($object));
printf("class \$object size: %d bytes\n", var_class_sizeof($object));

var_sizeof vs memory_get_usage

Php 8.1.2 Linux (x86_64)

loại hìnhvar_sizeof(bytes)memory_get_usage(bytes)
VÔ GIÁ TRỊ16 0
Boolean (Đúng)16 0
Số nguyên (1)16 0
Double (1,5)16 0
Chuỗi ("Hello World")27 40
nguồn48 416
có thể gọi được72 384
mảng (đếm: 0, danh sách: true)336 0
Mảng (đếm: 100, danh sách: true)2,128 8,248
Array (đếm: 1.000, Danh sách: Đúng)16,464 36,920
Array (đếm: 10.000, Danh sách: Đúng)262,224 528,440
mảng (đếm: 100, danh sách: sai)5,192 8,248
Array (đếm: 1.000, Danh sách: Sai)41,032 41,016
Mảng (đếm: 10.000, Danh sách: Sai)655,432 655,416
Lớp trống {}72 40
Classwitharray {"mảng (đếm: 0, danh sách: true)"}408 56
Classwitharray {"mảng (đếm: 100, danh sách: true)"}2,200 8,304
Classwitharray {"mảng (đếm: 1.000, danh sách: true)"}16,536 36,976
Classwitharray {"mảng (đếm: 10.000, danh sách: true)"}262,296 528,496
ClasswithObject {"class class {}"}144 96
ArrayIterator {"Array (Count: 100, List: true)"}2,264 8,376
ArrayIterator {"Array (Count: 100, Danh sách: Sai)"}5,328 40,376
loại hìnhvar_class_sizeof(bytes)var_sizeof(bytes)memory_get_usage(bytes)
Lớp trống {}1,362 72 40
Classwitharray {"mảng (đếm: 0, danh sách: true)"}1,494 408 56
Classwitharray {"mảng (đếm: 100, danh sách: true)"}1,494 2,200 8,304
Classwitharray {"mảng (đếm: 1.000, danh sách: true)"}1,494 16,536 36,976
Classwitharray {"mảng (đếm: 10.000, danh sách: true)"}1,494 262,296 528,496
ClasswithObject {"class class {}"}1,495 144 96
ArrayIterator {"Array (Count: 100, List: true)"}2,437 2,264 8,376
ArrayIterator {"Array (Count: 100, Danh sách: Sai)"}2,437 5,328 40,376

Hạn chế

  • Chỉ hoạt động chính xác với các đối tượng userland và spr \ mảng
  • không hoạt động chính xác với các cấu trúc phức tạp như tiện ích mở rộng/tài nguyên/vật liệu gọi/chức năng
  • Để tính tổng kích thước của một đối tượng bạn cần sử dụng
    Memory (non-real): 344 bytes
    Strlen: 32 Bytes
    Strlen * 8bits: 256 bits
    
    3 với
    Memory (non-real): 344 bytes
    Strlen: 32 Bytes
    Strlen * 8bits: 256 bits
    
    4

Cho người đóng góp

Cách sao chép một bảng số ở trên

git clone :mrsuh/php-var-sizeof.git && cd php-var-sizeof
composer install
docker build -t image-php-var-sizeof .
docker run -it --rm --name my-running-script -v "$PWD":/app image-php-var-sizeof php bin/render-table.php

Cách biên dịch thư viện

cd php-src
./buildconf
./configure
cd ..
make DEBUG=1

Một biến PHP có thể là bao lâu?

Kích thước tối đa của một chuỗi là 2 GB trong PHP, có lẽ là do các giới hạn hấp dẫn, nếu được cho phép bởi Memory_Limit.2 GB in PHP, probably because of adressing limitations, if allowed by memory_limit .

Đó là một biến của PHP?

Một biến bắt đầu với dấu $, theo sau là tên của biến.Một tên biến phải bắt đầu bằng một chữ cái hoặc ký tự dấu gạch dưới.Một tên biến không thể bắt đầu với một số.Một tên biến chỉ có thể chứa các ký tự alpha-numeric và nhấn mạnh (A-Z, 0-9 và _). A variable name must start with a letter or the underscore character. A variable name cannot start with a number. A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ )

Có bao nhiêu biến trong PHP?

PHP có ba phạm vi biến khác nhau: cục bộ.toàn cầu.tĩnh.three different variable scopes: local. global. static.

$ _ Trong PHP là gì?

PHP $ _POST là một biến siêu toàn cầu PHP được sử dụng để thu thập dữ liệu biểu mẫu sau khi gửi biểu mẫu HTML với Phương thức = "Post".$ _POST cũng được sử dụng rộng rãi để vượt qua các biến.a PHP super global variable which is used to collect form data after submitting an HTML form with method="post". $_POST is also widely used to pass variables.

Có nghĩa là gì trong PHP?

=> là dấu phân cách cho các mảng kết hợp.Trong bối cảnh của vòng lặp foreach đó, nó gán khóa của mảng cho $ người dùng và giá trị cho $ pass.the separator for associative arrays. In the context of that foreach loop, it assigns the key of the array to $user and the value to $pass .