MediaWiki
REL1_22
|
00001 <?php 00029 class APCBagOStuff extends BagOStuff { 00035 public function get( $key, &$casToken = null ) { 00036 $val = apc_fetch( $key ); 00037 00038 $casToken = $val; 00039 00040 if ( is_string( $val ) ) { 00041 if ( $this->isInteger( $val ) ) { 00042 $val = intval( $val ); 00043 } else { 00044 $val = unserialize( $val ); 00045 } 00046 } 00047 00048 return $val; 00049 } 00050 00057 public function set( $key, $value, $exptime = 0 ) { 00058 if ( !$this->isInteger( $value ) ) { 00059 $value = serialize( $value ); 00060 } 00061 00062 apc_store( $key, $value, $exptime ); 00063 00064 return true; 00065 } 00066 00074 public function cas( $casToken, $key, $value, $exptime = 0 ) { 00075 // APC's CAS functions only work on integers 00076 throw new MWException( "CAS is not implemented in " . __CLASS__ ); 00077 } 00078 00084 public function delete( $key, $time = 0 ) { 00085 apc_delete( $key ); 00086 00087 return true; 00088 } 00089 00097 public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) { 00098 return $this->mergeViaLock( $key, $callback, $exptime, $attempts ); 00099 } 00100 00101 public function incr( $key, $value = 1 ) { 00102 return apc_inc( $key, $value ); 00103 } 00104 00105 public function decr( $key, $value = 1 ) { 00106 return apc_dec( $key, $value ); 00107 } 00108 }