Hướng dẫn dùng serilization trong PHP

Hàm serialize() sẽ mã hóa giá trị biến truyền vào thành một chuỗi đặc biệt, hàm trả về kết quả là chuỗi được mã hóa.

Show

    Hướng dẫn dùng serilization trong PHP

    Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

    Lưu ý: hàm serialize() có thể sử dụng với một mảng dữ liệu.

    Cú pháp

    Cú pháp: serialize( $var);

    Trong đó:

    Bài viết này được đăng tại [free tuts .net]

    • $var là biến cần chuyển đổi.

    Ví dụ

    Code

    $var = array(
    	"php",
    	2408,
    	"css",
    	"freetuts.net"
    );
    $varSerialize = serialize($var);
    echo "
    ";
    	print_r($varSerialize);
    echo "
    ";

    Kết quả

    a:4:{i:0;s:3:"php";i:1;i:2408;i:2;s:3:"css";i:3;s:12:"freetuts.net";}

    Tham khảo: php.net

    Hàm serialize() sẽ mã hóa giá trị biến truyền vào thành một chuỗi đặc biệt, hàm trả về kết quả là chuỗi được mã hóa.

    Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

    Lưu ý: hàm serialize() có thể sử dụng với một mảng dữ liệu.

    Cú pháp

    Cú pháp: serialize( $var);

    Trong đó:

    Bài viết này được đăng tại [free tuts .net]

    • $var là biến cần chuyển đổi.

    Ví dụ

    Code

    $var = array(
    	"php",
    	2408,
    	"css",
    	"freetuts.net"
    );
    $varSerialize = serialize($var);
    echo "
    ";
    	print_r($varSerialize);
    echo "
    ";

    Kết quả

    a:4:{i:0;s:3:"php";i:1;i:2408;i:2;s:3:"css";i:3;s:12:"freetuts.net";}

    Tham khảo: php.net

    Hàm serialize() sẽ mã hóa giá trị biến truyền vào thành một chuỗi đặc biệt, hàm trả về kết quả là chuỗi được mã hóa.

    Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

    Lưu ý: hàm serialize() có thể sử dụng với một mảng dữ liệu.

    Cú pháp

    Cú pháp: serialize( $var);

    Trong đó:

    Bài viết này được đăng tại [free tuts .net]

    • $var là biến cần chuyển đổi.

    Ví dụ

    Code

    $var = array( "php", 2408, "css", "freetuts.net" ); $varSerialize = serialize($var); echo "
    "; print_r($varSerialize); echo "
    ";

    Kết quả

    a:4:{i:0;s:3:"php";i:1;i:2408;i:2;s:3:"css";i:3;s:12:"freetuts.net";}

    Tham khảo: php.net

    Hàm serialize() sẽ mã hóa giá trị biến truyền vào thành một chuỗi đặc biệt, hàm trả về kết quả là chuỗi được mã hóa.

    Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

    Lưu ý: hàm serialize() có thể sử dụng với một mảng dữ liệu.

    Cú pháp

    Cú pháp: serialize( $var);

    Trong đó:

    Bài viết này được đăng tại [free tuts .net]

    • $var là biến cần chuyển đổi.

    Ví dụ

    Code

    $var = array(
    	"php",
    	2408,
    	"css",
    	"freetuts.net"
    );
    $varSerialize = serialize($var);
    echo "
    ";
    	print_r($varSerialize);
    echo "
    ";

    Kết quả

    a:4:{i:0;s:3:"php";i:1;i:2408;i:2;s:3:"css";i:3;s:12:"freetuts.net";}

    Tham khảo: php.net

    answer

    52

    Ưu điểm chính của serialize: nó dành riêng cho PHP, có nghĩa là nó có thể đại diện cho các loại PHP , bao gồm các trường hợp của các lớp của riêng bạn - và bạn sẽ lấy lại các đối tượng của mình, vẫn là các bản sao của các lớp, khi giải mã dữ liệu của bạn.


    Ưu điểm chính của json_encode: JSON không dành riêng cho PHP: có các thư viện để đọc / viết nó bằng một số ngôn ngữ - có nghĩa là sẽ tốt hơn nếu bạn muốn một thứ gì đó có thể được thao tác với một ngôn ngữ khác ngoài PHP.

    Chuỗi JSON cũng dễ đọc / ghi / sửa đổi bằng tay hơn một chuỗi được tuần tự hóa.

    Mặt khác, vì JSON không dành riêng cho PHP nên nó không nhận thức được những thứ dành riêng cho PHP - như kiểu dữ liệu.


    Dưới dạng một vài chú thích bên lề:

    • Ngay cả khi có sự khác biệt nhỏ về tốc độ giữa hai thứ đó, thì điều đó cũng không quan trọng lắm: bạn có thể sẽ không tuần tự hóa / hủy tài liệu hóa nhiều dữ liệu
    • Bạn có chắc đây là cách tốt nhất để lưu trữ dữ liệu trong cơ sở dữ liệu?
      • Bạn sẽ không thể thực hiện nhiều truy vấn trên các dải tuần tự, trong DB: bạn sẽ không thể sử dụng dữ liệu của mình trong wherecác mệnh đề, cũng như cập nhật dữ liệu mà không có sự can thiệp của PHP ...

    52 hữu ích 2 bình luận chia sẻ

    answer

    12

    Tôi đã thực hiện một số phân tích về Mã hóa Json và Serialization trong PHP. Và tôi thấy rằng Json là tốt nhất cho dữ liệu thuần túy và đơn giản như mảng.

    Xem kết quả thí nghiệm của tôi tại https://www.shozab.com/php-serialization-vs-json-encoding-for-an-array/

    12 hữu ích 1 bình luận chia sẻ

    answer

    8

    Một lợi thế của json_encodehơn serializelà kích thước. Tôi nhận thấy rằng khi tôi đang cố gắng tìm ra lý do tại sao memcachebộ nhớ đã sử dụng của chúng ta ngày càng lớn và đang cố gắng tìm cách giảm thiểu là:

    Điều này mang lại cho bạn:

    string(22) "a:1:{s:1:"a";s:1:"b";}" string(9) "{"a":"b"}" Size of serialized array: 22 Size of json encoded array: 9 Serialize is 59% bigger

    Rõ ràng tôi đã lấy một ví dụ cực đoan nhất, vì mảng càng ngắn, chi phí tuần tự hóa càng quan trọng (liên quan đến kích thước đối tượng ban đầu, do định dạng áp đặt số lượng ký tự tối thiểu bất kể nội dung nhỏ đến mức nào). Vẫn từ một trang web sản xuất, tôi thấy mảng được tuần tự hóa lớn hơn 20% so với json tương đương của chúng.

    8 hữu ích 0 bình luận chia sẻ

    answer

    5

    Trước hết, việc tuần tự hóa một mảng hoặc đối tượng và lưu trữ nó trong cơ sở dữ liệu thường là một mùi mã. Đôi khi mọi người kết thúc việc đặt một danh sách được phân tách bằng dấu phẩy vào một cột và sau đó gặp đủ thứ rắc rối khi sau đó họ phát hiện ra họ cần truy vấn trên đó.

    Vì vậy, hãy suy nghĩ thật kỹ về điều đó nếu đây là tình huống như vậy.

    Đối với sự khác biệt. PHP serialize có lẽ nhỏ gọn hơn nhưng chỉ sử dụng được với PHP. JSON là đa nền tảng và có thể mã hóa và giải mã chậm hơn (mặc dù tôi nghi ngờ có ý nghĩa như vậy).

    5 hữu ích 2 bình luận chia sẻ

    answer

    3

    Đầu tiên, cảm ơn Shozab Hasan và user359650 về những bài kiểm tra này. Tôi đã tự hỏi lựa chọn nào là tốt nhất và bây giờ tôi biết:

    Để mã hóa một mảng đơn giản, JSON sử dụng được với cả PHP VÀ javascript, có thể là các ngôn ngữ khác.

    Để mã hóa một đối tượng PHP, serialize là một lựa chọn tốt hơn vì tính đặc thù của PHP Objects chỉ có thể cài đặt được với PHP.

    Để lưu trữ dữ liệu, hãy lưu trữ dữ liệu được mã hóa trong một tệp hoặc sử dụng MySQL với định dạng chuẩn. Sẽ dễ dàng hơn nhiều để lấy lại dữ liệu của bạn. MySQL có các chức năng tuyệt vời để lấy dữ liệu theo cách bạn muốn lấy mà không cần xử lý PHP.

    Tôi chưa bao giờ thực hiện bất kỳ thử nghiệm nào nhưng tôi nghĩ rằng lưu trữ tệp là cách tốt nhất để lưu trữ dữ liệu của bạn nếu việc sắp xếp tệp hệ thống là đủ để lấy lại các tệp của bạn theo thứ tự chữ cái / chữ số. MySQL tham lam cho kiểu xử lý này và sử dụng cả hệ thống tệp ...

    3 hữu ích 0 bình luận chia sẻ

    answer

    2

    Nếu dữ liệu của bạn sẽ không bao giờ phải rời khỏi ứng dụng PHP của mình, tôi khuyên bạn nên serialize () vì nó cung cấp nhiều chức năng bổ sung như các phương thức __sleep () và __wakeup () cho các đối tượng của bạn. Nó cũng khôi phục các đối tượng dưới dạng các thể hiện của các lớp chính xác.

    Nếu bạn sẽ chuyển dữ liệu được tuần tự hóa sang một ứng dụng khác, bạn nên sử dụng JSON hoặc XML để tương thích.

    Nhưng lưu trữ một đối tượng được tuần tự hóa vào cơ sở dữ liệu? Có lẽ bạn nên nghĩ lại về điều đó. Nó có thể là rắc rối thực sự sau này.

    2 hữu ích 0 bình luận chia sẻ