[Cache] Handle unserialization failures for Memcached

This commit is contained in:
Nicolas Grekas 2017-07-21 14:42:57 +02:00
parent 34d5f9eefe
commit cccc88f738

View File

@ -26,6 +26,7 @@ trait MemcachedTrait
'persistent_id' => null,
'username' => null,
'password' => null,
'serializer' => 'php',
);
private $client;
@ -194,7 +195,14 @@ trait MemcachedTrait
*/
protected function doFetch(array $ids)
{
return $this->checkResultCode($this->client->getMulti($ids));
$unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback');
try {
return $this->checkResultCode($this->client->getMulti($ids));
} catch (\Error $e) {
throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
} finally {
ini_set('unserialize_callback_func', $unserializeCallbackHandler);
}
}
/**