2015-08-17 17:00:26 -07:00
< ? php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
* SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT
* LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE ,
* DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license . For more information , see
* < http :// www . doctrine - project . org >.
*/
namespace Doctrine\Common\Cache ;
/**
* APC cache provider .
*
* @ link www . doctrine - project . org
* @ since 2.0
* @ author Benjamin Eberlei < kontakt @ beberlei . de >
* @ author Guilherme Blanco < guilhermeblanco @ hotmail . com >
* @ author Jonathan Wage < jonwage @ gmail . com >
* @ author Roman Borschel < roman @ code - factory . org >
* @ author David Abdemoulaie < dave @ hobodave . com >
*/
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 )
{
return ( bool ) apc_store ( $id , $data , ( int ) $lifeTime );
}
/**
* { @ inheritdoc }
*/
protected function doDelete ( $id )
{
return apc_delete ( $id );
}
/**
* { @ 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 )
{
return apc_fetch ( $keys );
}
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 ) {
$info [ 'num_hits' ] = isset ( $info [ 'num_hits' ]) ? $info [ 'num_hits' ] : $info [ 'nhits' ];
$info [ 'num_misses' ] = isset ( $info [ 'num_misses' ]) ? $info [ 'num_misses' ] : $info [ 'nmisses' ];
$info [ 'start_time' ] = isset ( $info [ 'start_time' ]) ? $info [ 'start_time' ] : $info [ 'stime' ];
}
return array (
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' ],
);
}
}