isInteger( $val ) ) { $val = intval( $val ); } else { $val = unserialize( $val ); } } return $val; } /** * @param $key string * @param $value mixed * @param $exptime int * @return bool */ public function set( $key, $value, $exptime = 0 ) { if ( !$this->isInteger( $value ) ) { $value = serialize( $value ); } apc_store( $key, $value, $exptime ); return true; } /** * @param $casToken mixed * @param $key string * @param $value mixed * @param $exptime int * @return bool */ public function cas( $casToken, $key, $value, $exptime = 0 ) { // APC's CAS functions only work on integers throw new MWException( "CAS is not implemented in " . __CLASS__ ); } /** * @param $key string * @param $time int * @return bool */ public function delete( $key, $time = 0 ) { apc_delete( $key ); return true; } /** * @param $key string * @param $callback closure Callback method to be executed * @param int $exptime Either an interval in seconds or a unix timestamp for expiry * @param int $attempts The amount of times to attempt a merge in case of failure * @return bool success */ public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) { return $this->mergeViaLock( $key, $callback, $exptime, $attempts ); } public function incr( $key, $value = 1 ) { return apc_inc( $key, $value ); } public function decr( $key, $value = 1 ) { return apc_dec( $key, $value ); } }