[-] BO : Fix bug #PSCFI-6902 fatal error when memcache not installed and Memcached previously activated
This commit is contained in:
Vendored
+28
-22
@@ -46,26 +46,28 @@ class CacheMemcacheCore extends Cache
|
||||
|
||||
// Get keys (this code comes from Doctrine 2 project)
|
||||
$this->keys = array();
|
||||
$all_slabs = $this->memcache->getExtendedStats('slabs');
|
||||
|
||||
foreach ($all_slabs as $server => $slabs)
|
||||
{
|
||||
if (is_array($slabs))
|
||||
{
|
||||
foreach (array_keys($slabs) as $slab_id)
|
||||
{
|
||||
$dump = $this->memcache->getExtendedStats('cachedump', (int)$slab_id);
|
||||
if ($dump)
|
||||
{
|
||||
foreach ($dump as $entries)
|
||||
{
|
||||
if ($entries)
|
||||
$this->keys = array_merge($this->keys, array_keys($entries));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$servers = self::getMemcachedServers();
|
||||
if(is_array($servers) && count($servers) > 0)
|
||||
$all_slabs = $this->memcache->getExtendedStats('slabs');
|
||||
if(isset($all_slabs) && is_array($all_slabs))
|
||||
foreach ($all_slabs as $server => $slabs)
|
||||
{
|
||||
if (is_array($slabs))
|
||||
{
|
||||
foreach (array_keys($slabs) as $slab_id)
|
||||
{
|
||||
$dump = $this->memcache->getExtendedStats('cachedump', (int)$slab_id);
|
||||
if ($dump)
|
||||
{
|
||||
foreach ($dump as $entries)
|
||||
{
|
||||
if ($entries)
|
||||
$this->keys = array_merge($this->keys, array_keys($entries));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
@@ -78,8 +80,12 @@ class CacheMemcacheCore extends Cache
|
||||
*/
|
||||
public function connect()
|
||||
{
|
||||
$this->memcache = new Memcache();
|
||||
$servers = CacheMemcache::getMemcachedServers();
|
||||
if (class_exists('Memcache') && extension_loaded('memcache'))
|
||||
$this->memcache = new Memcache();
|
||||
else
|
||||
return false;
|
||||
|
||||
$servers = self::getMemcachedServers();
|
||||
if (!$servers)
|
||||
return false;
|
||||
foreach ($servers as $server)
|
||||
|
||||
Reference in New Issue
Block a user