2017-04-13 15:53:35 +01:00
< ? php
namespace Doctrine\Common\Cache ;
2018-11-23 12:29:20 +00:00
use function apcu_cache_info ;
use function apcu_clear_cache ;
use function apcu_delete ;
use function apcu_exists ;
use function apcu_fetch ;
use function apcu_sma_info ;
use function apcu_store ;
use function count ;
2017-04-13 15:53:35 +01:00
/**
* APCu cache provider .
*
* @ link www . doctrine - project . org
*/
class ApcuCache extends CacheProvider
{
/**
* { @ inheritdoc }
*/
protected function doFetch ( $id )
{
return apcu_fetch ( $id );
}
/**
* { @ inheritdoc }
*/
protected function doContains ( $id )
{
return apcu_exists ( $id );
}
/**
* { @ inheritdoc }
*/
protected function doSave ( $id , $data , $lifeTime = 0 )
{
return apcu_store ( $id , $data , $lifeTime );
}
/**
* { @ inheritdoc }
*/
protected function doDelete ( $id )
{
// apcu_delete returns false if the id does not exist
return apcu_delete ( $id ) || ! apcu_exists ( $id );
}
2018-11-23 12:29:20 +00:00
/**
* { @ inheritdoc }
*/
protected function doDeleteMultiple ( array $keys )
{
$result = apcu_delete ( $keys );
return $result !== false && count ( $result ) !== count ( $keys );
}
2017-04-13 15:53:35 +01:00
/**
* { @ inheritdoc }
*/
protected function doFlush ()
{
return apcu_clear_cache ();
}
/**
* { @ inheritdoc }
*/
protected function doFetchMultiple ( array $keys )
{
return apcu_fetch ( $keys ) ? : [];
}
/**
* { @ inheritdoc }
*/
protected function doSaveMultiple ( array $keysAndValues , $lifetime = 0 )
{
$result = apcu_store ( $keysAndValues , null , $lifetime );
return empty ( $result );
}
/**
* { @ inheritdoc }
*/
protected function doGetStats ()
{
$info = apcu_cache_info ( true );
$sma = apcu_sma_info ();
2018-11-23 12:29:20 +00:00
return [
2017-04-13 15:53:35 +01:00
Cache :: STATS_HITS => $info [ 'num_hits' ],
Cache :: STATS_MISSES => $info [ 'num_misses' ],
Cache :: STATS_UPTIME => $info [ 'start_time' ],
Cache :: STATS_MEMORY_USAGE => $info [ 'mem_size' ],
Cache :: STATS_MEMORY_AVAILABLE => $sma [ 'avail_mem' ],
2018-11-23 12:29:20 +00:00
];
2017-04-13 15:53:35 +01:00
}
}