Баги в библиотеке memcached (getMulti)

Долго боролись с багом при использовании Memcached::getMulti в php 5.3.8.

Как это было:
Сначала данные складываются в кэш под некоторыми ключами, потом происходит считывание

Так вот, if ( array_key_exists( $actionCacheKey, $cached ) ) не отрабатывает никогда (равно как isset и ! empty).
При этом условие else if ( in_array( $actionCacheKey, array_keys( $cached ) ) ) всегда истинно.

При этом опытным путём было выяснено, что некоторые префиксы ключей «работают как надо», но есть зависимость работы как надо от сервера.
В общем долго промучались.
В итоге, как и подозревали, проблема оказалась в библиотеке Memcached (при использовании бинарного протокола setOption( Memcached::OPT_BINARY_PROTOCOL, true );) и даже заведена бага:
https://bugs.php.net/bug.php?id=59990

LEAVE A COMMENT