2015-08-17 17:00:26 -07:00
< ? php
namespace Doctrine\Common\Cache ;
2018-11-23 12:29:20 +00:00
use const PHP_VERSION_ID ;
use function apc_cache_info ;
use function apc_clear_cache ;
use function apc_delete ;
use function apc_exists ;
use function apc_fetch ;
use function apc_sma_info ;
use function apc_store ;
2015-08-17 17:00:26 -07:00
/**
* APC cache provider .
*
2017-04-13 15:53:35 +01:00
* @ link www . doctrine - project . org
* @ deprecated since version 1.6 , use ApcuCache instead
2015-08-17 17:00:26 -07:00
*/
class ApcCache extends CacheProvider
{
/**
* { @ inheritdoc }
*/
protected function doFetch ( $id )
{
return apc_fetch ( $id );
}
/**
* { @ inheritdoc }
*/
protected function doContains ( $id )
{
return apc_exists ( $id );
}
/**
* { @ inheritdoc }
*/
protected function doSave ( $id , $data , $lifeTime = 0 )
{
2017-04-13 15:53:35 +01:00
return apc_store ( $id , $data , $lifeTime );
2015-08-17 17:00:26 -07:00
}
/**
* { @ inheritdoc }
*/
protected function doDelete ( $id )
{
2017-04-13 15:53:35 +01:00
// apc_delete returns false if the id does not exist
return apc_delete ( $id ) || ! apc_exists ( $id );
2015-08-17 17:00:26 -07:00
}
/**
* { @ inheritdoc }
*/
protected function doFlush ()
{
return apc_clear_cache () && apc_clear_cache ( 'user' );
}
2015-10-08 11:40:12 -07:00
/**
* { @ inheritdoc }
*/
protected function doFetchMultiple ( array $keys )
{
2017-04-13 15:53:35 +01:00
return apc_fetch ( $keys ) ? : [];
}
/**
* { @ inheritdoc }
*/
protected function doSaveMultiple ( array $keysAndValues , $lifetime = 0 )
{
$result = apc_store ( $keysAndValues , null , $lifetime );
return empty ( $result );
2015-10-08 11:40:12 -07:00
}
2015-08-17 17:00:26 -07:00
/**
* { @ inheritdoc }
*/
protected function doGetStats ()
{
2015-10-08 11:40:12 -07:00
$info = apc_cache_info ( '' , true );
2015-08-17 17:00:26 -07:00
$sma = apc_sma_info ();
// @TODO - Temporary fix @see https://github.com/krakjoe/apcu/pull/42
if ( PHP_VERSION_ID >= 50500 ) {
2018-11-23 12:29:20 +00:00
$info [ 'num_hits' ] = $info [ 'num_hits' ] ? ? $info [ 'nhits' ];
$info [ 'num_misses' ] = $info [ 'num_misses' ] ? ? $info [ 'nmisses' ];
$info [ 'start_time' ] = $info [ 'start_time' ] ? ? $info [ 'stime' ];
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
return [
2015-08-17 17:00:26 -07: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
];
2015-08-17 17:00:26 -07:00
}
}