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



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

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

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

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

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

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

我猜你问这个问题是因为你在igbinary和php_binary中发现了binary这个词。然而,这并不能说明什么。首先比较phpphp_binary处理程序:

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

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

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

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

如果您也想使用igbinary序列化来进行序列化/反序列化,扩展提供了两个替代函数:

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

如果您对一些具体的差异感到担忧,请询问。

最新更新