123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- /**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category Zend
- * @package Zend_Server
- * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- * @version $Id: Cache.php 2504 2011-12-28 07:35:29Z liu21st $
- */
- /**
- * Zend_Server_Cache: cache server definitions
- *
- * @category Zend
- * @package Zend_Server
- * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- class Zend_Server_Cache
- {
- /**
- * @var array Methods to skip when caching server
- */
- protected static $_skipMethods = array();
- /**
- * Cache a file containing the dispatch list.
- *
- * Serializes the server definition stores the information
- * in $filename.
- *
- * Returns false on any error (typically, inability to write to file), true
- * on success.
- *
- * @param string $filename
- * @param Zend_Server_Interface $server
- * @return bool
- */
- public static function save($filename, Zend_Server_Interface $server)
- {
- if (!is_string($filename)
- || (!file_exists($filename) && !is_writable(dirname($filename))))
- {
- return false;
- }
- $methods = $server->getFunctions();
- if ($methods instanceof Zend_Server_Definition) {
- $definition = new Zend_Server_Definition();
- foreach ($methods as $method) {
- if (in_array($method->getName(), self::$_skipMethods)) {
- continue;
- }
- $definition->addMethod($method);
- }
- $methods = $definition;
- }
- if (0 === @file_put_contents($filename, serialize($methods))) {
- return false;
- }
- return true;
- }
- /**
- * Load server definition from a file
- *
- * Unserializes a stored server definition from $filename. Returns false if
- * it fails in any way, true on success.
- *
- * Useful to prevent needing to build the server definition on each
- * request. Sample usage:
- *
- * <code>
- * if (!Zend_Server_Cache::get($filename, $server)) {
- * require_once 'Some/Service/Class.php';
- * require_once 'Another/Service/Class.php';
- *
- * // Attach Some_Service_Class with namespace 'some'
- * $server->attach('Some_Service_Class', 'some');
- *
- * // Attach Another_Service_Class with namespace 'another'
- * $server->attach('Another_Service_Class', 'another');
- *
- * Zend_Server_Cache::save($filename, $server);
- * }
- *
- * $response = $server->handle();
- * echo $response;
- * </code>
- *
- * @param string $filename
- * @param Zend_Server_Interface $server
- * @return bool
- */
- public static function get($filename, Zend_Server_Interface $server)
- {
- if (!is_string($filename)
- || !file_exists($filename)
- || !is_readable($filename))
- {
- return false;
- }
- if (false === ($dispatch = @file_get_contents($filename))) {
- return false;
- }
- if (false === ($dispatchArray = @unserialize($dispatch))) {
- return false;
- }
- $server->loadFunctions($dispatchArray);
- return true;
- }
- /**
- * Remove a cache file
- *
- * @param string $filename
- * @return boolean
- */
- public static function delete($filename)
- {
- if (is_string($filename) && file_exists($filename)) {
- unlink($filename);
- return true;
- }
- return false;
- }
- }
|