8

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

session

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

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

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

4

1 回答 1

9

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

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

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

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

php_binary将在所有会话变量名称前加上名称的二进制长度。而php每个变量名都有一个|字符后缀(\x7C, decimal 124)。据我所知,变量值的序列化根本没有区别。

php所以值的序列化在和php_binary处理程序之间是相同的。

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

如果您也喜欢将igbinary序列化用于序列化/反序列化,该扩展提供了两个替换功能:

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

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

于 2011-07-17T10:14:58.830 回答