(PECL igbinary >= 1.1.1)
igbinary_serialize β Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΠ΅, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ PHP Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΠΈΡ ΡΠΈΠΏΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΡ.
Π§ΡΠΎΠ±Ρ ΡΠ½ΠΎΠ²Π° ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PHP, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ igbinary_unserialize().
valueΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ. igbinary_serialize() ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠΈΠΏΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² (resource) ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (object) (ΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅). ΠΠ°ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ (array), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ΅Π±Ρ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ igbinary_serialize(). Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π²Π½ΡΡΡΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΡΡΠΈΡ ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (array) ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (object) ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ. ΠΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΡΠ»ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ΅ΡΡΠ½Π°.
ΠΡΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², igbinary Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ __serialize() ΠΈΠ»ΠΈ __sleep() ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΡΠ±ΡΡ ΠΎΡΠΈΡΡΠΊΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΌΠΈΠ½ΡΡΡ ΠΈ Ρ.Π΄. ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ igbinary_unserialize(), Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ __unserialize() ΠΈΠ»ΠΈ __wakeup().
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ°ΡΠ°Π»ΠΎ ΠΈΠΌΡΠ½ Π·Π°ΠΊΡΡΡΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° (object) Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°, Π° Π½Π°ΡΠ°Π»ΠΎ ΠΈΠΌΡΠ½ Π·Π°ΡΠΈΡΡΠ½Π½ΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ
'*'. ΠΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΊΡΡΠΆΠ°ΡΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ Π±Π°ΠΉΡΠΎΠΌ Ρ ΠΎΠ±Π΅ΠΈΡ ΡΡΠΎΡΠΎΠ½.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π±Π°ΠΉΡΠΎΠ² value,
ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΎ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ Π΄Π²ΠΎΠΈΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π»ΡΠ±ΠΎΠ΅ Π±Π°ΠΉΡΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²Π°Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ²ΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ igbinary_serialize() ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ
Π² ΠΏΠΎΠ»Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
BLOB, Π° Π½Π΅ Π² ΠΏΠΎΠ»Π΅ CHAR ΠΈΠ»ΠΈ TEXT.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ igbinary_serialize()
<?php
$ser = igbinary_serialize(['test', 'test']);
echo urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00 array ( 0 => 'test', 1 => 'test', )
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ PHP Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅, Ρ ΠΊΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Serializable, Π»ΠΈΠ±ΠΎ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ __serialize()/__unserialize() ΠΈΠ»ΠΈ __sleep()/__wakeup(). ΠΡΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°Π΄ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ»ΠΈ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².