2011-07-17 35 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