28 private const KEY_SUFFIX =
':5';
31 private static $CAS_MAX_ATTEMPTS = 100;
35 $params[
'segmentationSize'] = INF;
36 parent::__construct( $params );
41 ini_set(
'apc.use_request_time',
'0' );
43 if ( PHP_SAPI ===
'cli' ) {
53 protected function doGet( $key, $flags = 0, &$casToken =
null ) {
57 $value = apcu_fetch( $key . self::KEY_SUFFIX );
58 if ( $getToken && $value !==
false ) {
68 protected function doSet( $key, $value, $exptime = 0, $flags = 0 ) {
71 return apcu_store( $key . self::KEY_SUFFIX, $value, $ttl );
75 protected function doAdd( $key, $value, $exptime = 0, $flags = 0 ) {
76 if ( apcu_exists( $key . self::KEY_SUFFIX ) ) {
83 return apcu_add( $key . self::KEY_SUFFIX, $value, $ttl );
87 protected function doDelete( $key, $flags = 0 ) {
88 apcu_delete( $key . self::KEY_SUFFIX );
97 if ( $step === $init ) {
100 $result = apcu_inc( $key . self::KEY_SUFFIX, $step,
$success, $ttl );
103 for ( $i = 0; $i < self::$CAS_MAX_ATTEMPTS; ++$i ) {
104 $oldCount = apcu_fetch( $key . self::KEY_SUFFIX );
105 if ( $oldCount ===
false ) {
108 if ( apcu_add( $key . self::KEY_SUFFIX, $count, $ttl ) ) {
112 } elseif ( is_int( $oldCount ) ) {
113 $count = $oldCount + $step;
114 if ( apcu_cas( $key . self::KEY_SUFFIX, $oldCount, $count ) ) {
129class_alias( APCUBagOStuff::class,
'APCUBagOStuff' );