[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/objectcache/ -> APCBagOStuff.php (source)

   1  <?php
   2  /**
   3   * Object caching using PHP's APC accelerator.
   4   *
   5   * This program is free software; you can redistribute it and/or modify
   6   * it under the terms of the GNU General Public License as published by
   7   * the Free Software Foundation; either version 2 of the License, or
   8   * (at your option) any later version.
   9   *
  10   * This program is distributed in the hope that it will be useful,
  11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13   * GNU General Public License for more details.
  14   *
  15   * You should have received a copy of the GNU General Public License along
  16   * with this program; if not, write to the Free Software Foundation, Inc.,
  17   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18   * http://www.gnu.org/copyleft/gpl.html
  19   *
  20   * @file
  21   * @ingroup Cache
  22   */
  23  
  24  /**
  25   * This is a wrapper for APC's shared memory functions
  26   *
  27   * @ingroup Cache
  28   */
  29  class APCBagOStuff extends BagOStuff {
  30      /**
  31       * @param string $key
  32       * @param int $casToken [optional]
  33       * @return mixed
  34       */
  35  	public function get( $key, &$casToken = null ) {
  36          $val = apc_fetch( $key );
  37  
  38          $casToken = $val;
  39  
  40          if ( is_string( $val ) ) {
  41              if ( $this->isInteger( $val ) ) {
  42                  $val = intval( $val );
  43              } else {
  44                  $val = unserialize( $val );
  45              }
  46          }
  47  
  48          return $val;
  49      }
  50  
  51      /**
  52       * @param string $key
  53       * @param mixed $value
  54       * @param int $exptime
  55       * @return bool
  56       */
  57  	public function set( $key, $value, $exptime = 0 ) {
  58          if ( !$this->isInteger( $value ) ) {
  59              $value = serialize( $value );
  60          }
  61  
  62          apc_store( $key, $value, $exptime );
  63  
  64          return true;
  65      }
  66  
  67      /**
  68       * @param mixed $casToken
  69       * @param string $key
  70       * @param mixed $value
  71       * @param int $exptime
  72       * @return bool
  73       */
  74  	public function cas( $casToken, $key, $value, $exptime = 0 ) {
  75          // APC's CAS functions only work on integers
  76          throw new MWException( "CAS is not implemented in " . __CLASS__ );
  77      }
  78  
  79      /**
  80       * @param string $key
  81       * @param int $time
  82       * @return bool
  83       */
  84  	public function delete( $key, $time = 0 ) {
  85          apc_delete( $key );
  86  
  87          return true;
  88      }
  89  
  90      /**
  91       * @param string $key
  92       * @param Closure $callback Callback method to be executed
  93       * @param int $exptime Either an interval in seconds or a unix timestamp for expiry
  94       * @param int $attempts The amount of times to attempt a merge in case of failure
  95       * @return bool Success
  96       */
  97  	public function merge( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
  98          return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
  99      }
 100  
 101  	public function incr( $key, $value = 1 ) {
 102          return apc_inc( $key, $value );
 103      }
 104  
 105  	public function decr( $key, $value = 1 ) {
 106          return apc_dec( $key, $value );
 107      }
 108  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1