* Lithium: the most rad php framework * * @copyright Copyright 2010, Union of RAD (http://union-of-rad.org) * @license http://opensource.org/licenses/bsd-license.php The BSD License */ /** * This file creates a default cache configuration using the most optimized adapter available, and * uses it to provide default caching for high-overhead operations. */ use lithium\storage\Cache; use lithium\core\Libraries; use lithium\action\Dispatcher; use lithium\storage\cache\adapter\Apc; /** * If APC is not available and the cache directory is not writeable, bail out. */ if (!($apcEnabled = Apc::enabled() && !is_writable(LITHIUM_APP_PATH . '/resources/tmp/cache'))) { return; } Cache::config(array('default' => array('adapter' => '\\lithium\\storage\\cache\\adapter\\' . ($apcEnabled ? 'Apc' : 'File')))); Dispatcher::applyFilter('run', function ($self, $params, $chain) { if ($cache = Cache::read('default', 'core.libraries')) { $cache = (array) unserialize($cache) + Libraries::cache(); Libraries::cache($cache); } $result = $chain->next($self, $params, $chain); if ($cache != Libraries::cache()) { Cache::write('default', 'core.libraries', serialize(Libraries::cache()), '+1 day'); } return $result; });
/** * Skip the test if APC extension is unavailable. */ public function skip() { $this->skipIf(!Apc::enabled(), 'APC is either not loaded or not enabled.'); }
* This file creates a default cache configuration using the most optimized adapter available, and * uses it to provide default caching for high-overhead operations. */ use lithium\storage\Cache; use lithium\core\Libraries; use lithium\action\Dispatcher; use lithium\storage\cache\adapter\Apc; if (PHP_SAPI === 'cli') { return; } /** * If APC is not available and the cache directory is not writeable, bail out. This block should be * removed post-install, and the cache should be configured with the adapter you plan to use. */ $cachePath = Libraries::get(true, 'resources') . '/tmp/cache'; if (!($apcEnabled = Apc::enabled()) && !is_writable($cachePath)) { return; } /** * This configures the default cache, based on whether ot not APC user caching is enabled. If it is * not, file caching will be used. Most of this code is for getting you up and running only, and * should be replaced with a hard-coded configuration, based on the cache(s) you plan to use. */ $default = array('adapter' => 'File', 'strategies' => array('Serializer')); if ($apcEnabled) { $default = array('adapter' => 'Apc'); } Cache::config(compact('default')); /** * Caches paths for auto-loaded and service-located classes. */
* `File`, `Redis`, `Apc`, `XCache` and `Memory`. Please see the documentation on the * adapters for specific characteristics and requirements. * * Most of this code is for getting you up and running only, and should be replaced with * a hard-coded configuration, based on the cache(s) you plan to use. * * We create a default cache configuration using the most optimized adapter available, and * use it to provide default caching for high-overhead operations. If APC is not available * and we can't degrade to file based caching, bail out. * * @see lithium\storage\Cache * @see lithium\storage\cache\adapters * @see lithium\storage\cache\strategies */ $cachePath = Libraries::get(true, 'resources') . '/tmp/cache'; if (!(($apc = Apc::enabled()) || PHP_SAPI === 'cli') && !is_writable($cachePath)) { return; } Cache::config(array('default' => array('adapter' => $apc ? 'Apc' : 'File', 'strategies' => $apc ? array() : array('Serializer'), 'scope' => $apc ? md5(LITHIUM_APP_PATH) : null))); /** * Apply * * Applies caching to neuralgic points of the framework but only when we are running * in production. This is also a good central place to add your own caching rules. * * A couple of caching rules are already defined below: * 1. Cache paths for auto-loaded and service-located classes. * 2. Cache describe calls on all connections that use a `Database` based adapter. * * @see lithium\core\Environment * @see lithium\core\Libraries