什么是php_binary序列化处理程序?

时间:2011-07-17 09:10:13

标签: php serialization igbinary

当我从CLI执行phpinfo()或php -i时,我得到以下输出:

session

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

我不知道PHP序列化支持二进制格式,文档中似乎没有关于它的任何内容。

我打算使用igbinary进行会话序列化到memcached服务器,所以我想知道 php_binary 是如何比较的。

1 个答案:

答案 0 :(得分:9)

igbinary PHP extension确实提供了一个新的会话序列化/反序列化处理程序,它不同于PHP自己的实现,即phpphp_binary

回答你的问题:这些处理程序根本没有比较,它们完全不同。 igbinary 引入的差异记录在项目自述文件中。

我假设你问这个问题,因为你在两个中找到了 binary 这个词:ig binary 和php_ binary 。然而,这并没有说太多。首先将phpphp_binary处理程序进行比较:

php_binary会话序列化/反序列化处理程序与默认的php处理程序几乎相同。它们仅区别于会话中的变量名称是如何编码的。

php_binary将为所有会话变量名称添加名称的二进制长度。使用php时,每个变量名称的后缀均为|字符(\x7C,十进制124)。据我所知,变量值的序列化根本没有区别。

因此,phpphp_binary处理程序的值序列化是相同的。

因此,除了会话变量名称的前/后缀之间的微小差别之外,问题实际上是询问igbinary与php序列化(在会话数据中使用)的比较。这些差异在igbinary readme中列出。它很好地描述了做了什么以及为什么。

如果您想使用igbinary序列化以及序列化/反序列化,则扩展程序提供两个替换函数:

igbinary_serializeigbinary_unserialize - 与他们的php表兄弟一样使用。

如果您担心这些差异的某些细节,请询问。