2011-07-17 57 views
8

當我做的phpinfo()或php -i從CLI中,我得到以下輸出:什麼是php_binary序列化處理程序?

session 

Registered save handlers => files user sqlite memcached 
Registered serializer handlers => php php_binary wddx 

我不知道,PHP序列化支持的二進制格式,有沒有出現在任何關於它的文檔。

我打算用igbinary會話序列化到memcached服務器,所以我不知道如何php_binary進行比較。

回答

9

igbinaryPHP extension提供了一個新的會話序列化/反序列化處理程序,它不同於PHP自己的實現,即phpphp_binary

要回答你的問題:這些處理程序根本不比較,它們完全不同。igbinary介紹記錄在項目自述文件中。

我想你問的問題,因爲你發現了兩個挺不住二進制:灌胃二進制和PHP_ 二進制。然而,這並不多說。與php_binary處理程序先比較php

php_binary會議序列化/反序列化處理程序與默認php處理程序幾乎相同。它們只是區分會話中的變量名是如何編碼的。

php_binary會將所有會話變量名稱加上名稱的二進制長度。與php同時,每個變量名的後綴爲|字符(\x7C,十進制124)。據我所知,變量值的序列化完全沒有區別。

因此,phpphp_binary處理程序之間的值的序列化是相同的。

因此,除了會話變量名稱前/後綴的細微差別之外,實際上問題是igbinary與php序列化(會話數據中使用的)比較如何。這些差異在igbinary readme中概述。它很好地描述了所做的事情和原因。

如果你喜歡用igbinary系列化以及用於序列化/反序列化,擴展提供了兩個替代的功能:

igbinary_serializeigbinary_unserialize - 使用像他們的堂兄弟PHP。

如果您關注某些差異的具體情況,請詢問。

+0

感謝您的回答!不,我對igbinary的工作原理非常清楚,當我使用它時,我無法在php_binary上找到任何信息。 – Toxikman

+0

@Toxikman:好的,那好吧。大多數文檔都在「源」:)內。在PHP手冊中,'php'和'pbp_binary'格式都沒有多少描述。您始終可以查看C源代碼和/或反向設計這些格式。 – hakre

+2

是的,但這要比使用googling答案長10倍,然後在StackOverflow上發佈一個關於它的問題,並感謝你,現在,任何人都可以在網上找到答案。 :-) – Toxikman