Was ist der php_binary-Serialisierungshandler?

8

Wenn ich phpinfo () oder php -i von der CLI aus mache, bekomme ich folgende Ausgabe:

%Vor%

Mir war nicht bekannt, dass die PHP-Serialisierung ein binäres Format unterstützt, und in der Dokumentation scheint es nichts zu geben.

Ich wollte igbinary für die Sitzungsserialisierung auf einem Memcached-Server verwenden, also frage ich mich wie php_binary vergleicht.

    
Toxikman 17.07.2011, 09:10
quelle

1 Antwort

9

Die igbinary PHP-Erweiterung bietet eine neue Sitzung serialize / deserialize-Handler, der sich von den PHP-eigenen Implementierungen unterscheidet, nämlich php und php_binary .

Um Ihre Frage zu beantworten: Diese Handler vergleichen überhaupt nicht, sie sind völlig unterschiedlich. Die Unterschiede, die igbinary eingeführt werden, sind in der Readme-Datei des Projekts dokumentiert.

Ich nehme an, Sie stellen die Frage, weil Sie das Wort binary innerhalb der beiden gefunden haben: ig binary und php_ binary . Aber das sagt nicht viel. Vergleichen Sie zuerst den php mit dem php_binary -Handler:

Der% session serialize / deserialize-Handler php_binary ist nahezu identisch mit dem standardmäßigen php -Handler. Sie unterscheiden sich nur darin, wie die Variablennamen in der Sitzung codiert sind.

php_binary wird allen Session-Variablennamen die binäre Länge des Namens voranstellen. Mit php hat jeder Variablenname ein Suffix des | -Zeichens ( \x7C , dezimal 124 ). Soweit ich weiß, unterscheidet sich die Serialisierung der Variablenwerte überhaupt nicht.

Also ist die Serialisierung der Werte zwischen dem php und php_binary Handler identisch.

Neben dem kleinen Unterschied zwischen den Vor- / Suffixen von Sitzungsvariablen-Namen fragt die Frage also tatsächlich, wie sich igbinary mit der PHP-Serialisierung (die in den Sitzungsdaten verwendet wird) vergleichen lässt. Diese Unterschiede sind in der igbinary readme beschrieben. Es beschreibt recht gut, was getan wurde und warum.

Wenn Sie igbinary serialization auch für serialize / unserialize verwenden möchten, bietet die Erweiterung zwei Ersatzfunktionen:

igbinary_serialize und igbinary_unserialize - verwendet wie ihre Verwandten Cousins.

Wenn Sie sich über einige Besonderheiten der Unterschiede Sorgen machen, fragen Sie bitte.

    
hakre 17.07.2011, 10:14
quelle

Tags und Links