Overview

Packages

  • None
  • SimplePie

Classes

  • SimplePie
  • SimplePie_Author
  • SimplePie_Autoloader
  • SimplePie_Cache
  • SimplePie_Cache_DB
  • SimplePie_Cache_File
  • SimplePie_Cache_Memcache
  • SimplePie_Cache_MySQL
  • SimplePie_Caption
  • SimplePie_Category
  • SimplePie_Content_Type_Sniffer
  • SimplePie_Copyright
  • SimplePie_Core
  • SimplePie_Credit
  • SimplePie_Decode_HTML_Entities
  • SimplePie_Enclosure
  • SimplePie_File
  • SimplePie_gzdecode
  • SimplePie_HTTP_Parser
  • SimplePie_IRI
  • SimplePie_Item
  • SimplePie_Locator
  • SimplePie_Misc
  • SimplePie_Net_IPv6
  • SimplePie_Parse_Date
  • SimplePie_Parser
  • SimplePie_Rating
  • SimplePie_Registry
  • SimplePie_Restriction
  • SimplePie_Sanitize
  • SimplePie_Source
  • SimplePie_XML_Declaration_Parser

Interfaces

  • SimplePie_Cache_Base
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: /**
  3:  * SimplePie
  4:  *
  5:  * A PHP-Based RSS and Atom Feed Framework.
  6:  * Takes the hard work out of managing a complete RSS/Atom solution.
  7:  *
  8:  * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
  9:  * All rights reserved.
 10:  *
 11:  * Redistribution and use in source and binary forms, with or without modification, are
 12:  * permitted provided that the following conditions are met:
 13:  *
 14:  *  * Redistributions of source code must retain the above copyright notice, this list of
 15:  *    conditions and the following disclaimer.
 16:  *
 17:  *  * Redistributions in binary form must reproduce the above copyright notice, this list
 18:  *    of conditions and the following disclaimer in the documentation and/or other materials
 19:  *    provided with the distribution.
 20:  *
 21:  *  * Neither the name of the SimplePie Team nor the names of its contributors may be used
 22:  *    to endorse or promote products derived from this software without specific prior
 23:  *    written permission.
 24:  *
 25:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
 26:  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 27:  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
 28:  * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 29:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 30:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 31:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 32:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 33:  * POSSIBILITY OF SUCH DAMAGE.
 34:  *
 35:  * @package SimplePie
 36:  * @version 1.3-dev
 37:  * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
 38:  * @author Ryan Parman
 39:  * @author Geoffrey Sneddon
 40:  * @author Ryan McCue
 41:  * @link http://simplepie.org/ SimplePie
 42:  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
 43:  */
 44: 
 45: /**
 46:  * Caches data to memcache
 47:  *
 48:  * Registered for URLs with the "memcache" protocol
 49:  *
 50:  * For example, `memcache://localhost:11211/?timeout=3600^prefix=sp_` will
 51:  * connect to memcache on `localhost` on port 11211. All tables will be
 52:  * prefixed with `sp_` and data will expire after 3600 seconds
 53:  *
 54:  * @package SimplePie
 55:  * @uses Memcache
 56:  */
 57: class SimplePie_Cache_Memcache implements SimplePie_Cache_Base
 58: {
 59:     /**
 60:      * Memcache instance
 61:      *
 62:      * @var Memcache
 63:      */
 64:     protected $cache;
 65: 
 66:     /**
 67:      * Options
 68:      *
 69:      * @var array
 70:      */
 71:     protected $options;
 72: 
 73:     /**
 74:      * Cache name
 75:      *
 76:      * @var string
 77:      */
 78:     protected $name;
 79: 
 80:     /**
 81:      * Create a new cache object
 82:      *
 83:      * @param string $location Location string (from SimplePie::$cache_location)
 84:      * @param string $name Unique ID for the cache
 85:      * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
 86:      */
 87:     public function __construct($location, $name, $type)
 88:     {
 89:         $this->options = array(
 90:             'host' => '127.0.0.1',
 91:             'port' => 11211,
 92:             'extras' => array(
 93:                 'timeout' => 3600, // one hour
 94:                 'prefix' => 'simplepie_',
 95:             ),
 96:         );
 97:         $this->options = array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
 98:         $this->name = $this->options['extras']['prefix'] . md5("$name:$type");
 99: 
100:         $this->cache = new Memcache();
101:         $this->cache->addServer($this->options['host'], (int) $this->options['port']);
102:     }
103: 
104:     /**
105:      * Save data to the cache
106:      *
107:      * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
108:      * @return bool Successfulness
109:      */
110:     public function save($data)
111:     {
112:         if ($data instanceof SimplePie)
113:         {
114:             $data = $data->data;
115:         }
116:         return $this->cache->set($this->name, serialize($data), MEMCACHE_COMPRESSED, (int) $this->options['extras']['timeout']);
117:     }
118: 
119:     /**
120:      * Retrieve the data saved to the cache
121:      *
122:      * @return array Data for SimplePie::$data
123:      */
124:     public function load()
125:     {
126:         $data = $this->cache->get($this->name);
127: 
128:         if ($data !== false)
129:         {
130:             return unserialize($data);
131:         }
132:         return false;
133:     }
134: 
135:     /**
136:      * Retrieve the last modified time for the cache
137:      *
138:      * @return int Timestamp
139:      */
140:     public function mtime()
141:     {
142:         $data = $this->cache->get($this->name);
143: 
144:         if ($data !== false)
145:         {
146:             // essentially ignore the mtime because Memcache expires on it's own
147:             return time();
148:         }
149: 
150:         return false;
151:     }
152: 
153:     /**
154:      * Set the last modified time to the current time
155:      *
156:      * @return bool Success status
157:      */
158:     public function touch()
159:     {
160:         $data = $this->cache->get($this->name);
161: 
162:         if ($data !== false)
163:         {
164:             return $this->cache->set($this->name, $data, MEMCACHE_COMPRESSED, (int) $this->duration);
165:         }
166: 
167:         return false;
168:     }
169: 
170:     /**
171:      * Remove the cache
172:      *
173:      * @return bool Success status
174:      */
175:     public function unlink()
176:     {
177:         return $this->cache->delete($this->name, 0);
178:     }
179: }
180: 
SimplePie Documentation API documentation generated by ApiGen 2.4.0