diff -r 000000000000 -r 4eba9c11703f web/Zend/Server/Cache.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/Server/Cache.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,147 @@ +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: + * + * + * 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; + * + * + * @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; + } +}