all repos — wp-ffpc @ c84498d06997f6f6d87d38182ee1b5f10648576a

backends/apc.php (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
<?php

if (!class_exists('WP_FFPC_Backend_apc')):

class WP_FFPC_Backend_apc extends WP_FFPC_Backend {

	/**
	 * init apc backend: test APC availability and set alive status
	 */
	protected  function _init () {
		/* verify apc functions exist, apc extension is loaded */
		if ( ! function_exists( 'apc_cache_info' ) ) {
			$this->log (  __translate__('APC extension missing', 'wp-ffpc' ) );
			return false;
		}

		/* verify apc is working */
		if ( apc_cache_info("user",true) ) {
			$this->log (  __translate__('backend OK', 'wp-ffpc' ) );
			$this->alive = true;
		}
	}

	/**
	 * health checker for APC
	 *
	 * @return boolean Aliveness status
	 *
	 */
	protected  function _status () {
		$this->status = true;
		return $this->alive;
	}

	/**
	 * get function for APC backend
	 *
	 * @param string $key Key to get values for
	 *
	 * @return mixed Fetched data based on key
	 *
	*/
	protected  function _get ( &$key ) {
		return apc_fetch( $key );
	}

	/**
	 * Set function for APC backend
	 *
	 * @param string $key Key to set with
	 * @param mixed $data Data to set
	 *
	 * @return boolean APC store outcome
	 */
	protected  function _set (  &$key, &$data, &$expire ) {
		return apc_store( $key , $data , $expire );
	}


	/**
	 * Flushes APC user entry storage
	 *
	 * @return boolean APC flush outcome status
	 *
	*/
	protected  function _flush ( ) {
		return apc_clear_cache('user');
	}

	/**
	 * Removes entry from APC or flushes APC user entry storage
	 *
	 * @param mixed $keys Keys to clear, string or array
	*/
	protected  function _clear ( &$keys ) {
		/* make an array if only one string is present, easier processing */
		if ( !is_array ( $keys ) )
			$keys = array ( $keys => true );

		foreach ( $keys as $key => $dummy ) {
			if ( ! apc_delete ( $key ) ) {
				$this->log ( sprintf( __translate__( 'Failed to delete APC entry: %s', 'wp-ffpc' ),  $key ), LOG_WARNING );
				//throw new Exception ( __translate__('Deleting APC entry failed with key ', $this->plugin_constant ) . $key );
			}
			else {
				$this->log ( sprintf( __translate__( 'APC entry delete: %s', 'wp-ffpc' ),  $key ) );
			}
		}
	}
}

endif;