|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2012-12-30 20:46 UTC] alex dot offshore at gmail dot com
[2012-12-31 10:42 UTC] tony2001@php.net
[2012-12-31 10:42 UTC] tony2001@php.net
-Status: Open
+Status: Feedback
[2013-02-18 00:36 UTC] pecl-dev at lists dot php dot net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 00:00:01 2025 UTC |
Description: ------------ When using Memcache::get for retrieving multiple entries, the keys of returned array may be broken, if key names contain some chars from 0x00 to 0x20. Everything is OK when using Memcache::get to retrieve single value. Tested with PHP 5.4.9 and PHP 5.3.10 (version is irrelevant); php-memcache versions 3.0.6, 3.0.7 and 2.2.7; memcached 1.4.13. Test script: --------------- <?php $memcache = new Memcache(); $memcache->connect('localhost', '11211'); $prefix = 'TEST_'; $hex_key = '310e323334'; $key = $prefix . hex2bin($hex_key); $value = 'test'; echo "Trying key: $prefix($hex_key)\n"; $set_result = $memcache->set($key, $value) !== false; echo "set: " . ($set_result ? 'ok' : 'fail') . "\n"; $get_result_expected = $value; $get_result = $memcache->get($key); echo "get: " . (($get_result === $get_result_expected) ? 'ok' : 'fail') . ", '" . serialize($get_result) . "' vs '" . serialize($get_result_expected) . "'\n"; $multiget_result_expected = array($key => $value); $multiget_result = $memcache->get(array($key)); echo "multiget: " . (($multiget_result === $multiget_result_expected) ? 'ok' : 'fail') . ", '" . serialize($multiget_result) . "' vs '" . serialize($multiget_result_expected) . "'\n"; echo "\n\n"; Expected result: ---------------- Trying key: TEST_(310e323334) set: ok get: ok, 's:4:"test";' vs 's:4:"test";' multiget: fail, 'a:1:{s:10:"TEST_1_234";s:4:"test";}' vs 'a:1:{s:10:"TEST_1234";s:4:"test";}' Actual result: -------------- Trying key: TEST_(310e323334) set: ok get: ok, 's:4:"test";' vs 's:4:"test";' multiget: ok, 'a:1:{s:10:"TEST_1?234";s:4:"test";}' vs 'a:1:{s:10:"TEST_1?234";s:4:"test";}' (note: the "?" mark represents non-printable char)