Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
784 views
in Technique[技术] by (71.8m points)

php - What is the php_binary serialization handler?

When I do phpinfo() or php -i from the CLI, I get the following output:

session

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

I was not aware that PHP serialization supported a binary format, and there does not appear to be anything in the documentation about it.

I was going to use igbinary for session serialization to a memcached server, so I'm wondering how php_binary compares.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The igbinary PHP extension does offer a new session serialize/deserialize handler that differs from PHP's own implementations, namely php and php_binary.

To answer your question: These handlers do not compare at all, they are totally different. The differences igbinary introduces are documented within the projects readme.

I assume you're asking the question because you found the word binary within the two: igbinary and php_binary. However that's not saying much. Compare the php with the php_binary handler first:

The php_binary session serialize/deserialize handler is nearly identical with the default php handler. They differ only how the variable names that are within the session are encoded.

php_binary will prefix all session variable names with the binary length of the name. While with php each variable name has a suffix of the | character (x7C, decimal 124). From what I know, the serialization of the variable's values does not differ at all.

So the serialization of values is identical between the php and php_binary handler.

So next to the little difference in pre-/suffix of session variable names, the question actually asks about how does igbinary compare with php serialization (which is used in the session data). Those differences are outlined in the igbinary readme. It fairly well describes what's done and why.

If you like to use igbinary serialization as well for serialize/unserialize, the extension offers two replacement functions:

igbinary_serialize and igbinary_unserialize - used like their php cousins.

If you are concerned about some specifics of the differences, please ask.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...