2015-08-17 17:00:26 -07:00
< ? php
namespace Doctrine\Common\Cache ;
2018-11-23 12:29:20 +00:00
use const XC_TYPE_VAR ;
use function ini_get ;
use function serialize ;
use function unserialize ;
use function xcache_clear_cache ;
use function xcache_get ;
use function xcache_info ;
use function xcache_isset ;
use function xcache_set ;
use function xcache_unset ;
2015-08-17 17:00:26 -07:00
/**
* Xcache cache driver .
*
* @ link www . doctrine - project . org
2018-11-23 12:29:20 +00:00
*
* @ deprecated
2015-08-17 17:00:26 -07:00
*/
class XcacheCache extends CacheProvider
{
/**
* { @ inheritdoc }
*/
protected function doFetch ( $id )
{
return $this -> doContains ( $id ) ? unserialize ( xcache_get ( $id )) : false ;
}
/**
* { @ inheritdoc }
*/
protected function doContains ( $id )
{
return xcache_isset ( $id );
}
/**
* { @ inheritdoc }
*/
protected function doSave ( $id , $data , $lifeTime = 0 )
{
return xcache_set ( $id , serialize ( $data ), ( int ) $lifeTime );
}
/**
* { @ inheritdoc }
*/
protected function doDelete ( $id )
{
return xcache_unset ( $id );
}
/**
* { @ inheritdoc }
*/
protected function doFlush ()
{
$this -> checkAuthorization ();
2015-10-08 11:40:12 -07:00
xcache_clear_cache ( XC_TYPE_VAR );
2015-08-17 17:00:26 -07:00
return true ;
}
/**
* Checks that xcache . admin . enable_auth is Off .
*
* @ return void
*
* @ throws \BadMethodCallException When xcache . admin . enable_auth is On .
*/
protected function checkAuthorization ()
{
if ( ini_get ( 'xcache.admin.enable_auth' )) {
2015-10-08 11:40:12 -07:00
throw new \BadMethodCallException (
'To use all features of \Doctrine\Common\Cache\XcacheCache, '
. 'you must set "xcache.admin.enable_auth" to "Off" in your php.ini.'
);
2015-08-17 17:00:26 -07:00
}
}
/**
* { @ inheritdoc }
*/
protected function doGetStats ()
{
$this -> checkAuthorization ();
$info = xcache_info ( XC_TYPE_VAR , 0 );
2018-11-23 12:29:20 +00:00
return [
2015-08-17 17:00:26 -07:00
Cache :: STATS_HITS => $info [ 'hits' ],
Cache :: STATS_MISSES => $info [ 'misses' ],
Cache :: STATS_UPTIME => null ,
Cache :: STATS_MEMORY_USAGE => $info [ 'size' ],
Cache :: STATS_MEMORY_AVAILABLE => $info [ 'avail' ],
2018-11-23 12:29:20 +00:00
];
2015-08-17 17:00:26 -07:00
}
}