/** * @param string $cache_directory * @return Ai1ec_Cache_Strategy */ public static function create_cache_startegy_instance($cache_directory = null) { $is_cache_directory_writable = false; if (null !== $cache_directory) { if (!isset(self::$cache_directories[$cache_directory])) { self::$cache_directories[$cache_directory] = Ai1ec_Filesystem_Utility::is_writable($cache_directory); } $is_cache_directory_writable = self::$cache_directories[$cache_directory]; } $is_apc_installed = function_exists('apc_store') && function_exists('apc_fetch') && ini_get('apc.enabled'); $sapi_type = php_sapi_name(); if (substr($sapi_type, 0, 3) === 'cgi' || substr($sapi_type, -3, 3) === 'cgi') { $is_apc_installed = false; } if ($is_apc_installed) { return new Ai1ec_Apc_Cache(); } else { if ($is_cache_directory_writable) { return new Ai1ec_File_Cache($cache_directory); } else { return new Ai1ec_Db_Cache(Ai1ec_Adapters_Factory::create_db_adapter_instance()); } } }
/** * _is_cache_dir_writable method * * Check if given cache directory is writable. * * @param string $directory A path to check for writability * * @return bool Writability */ protected static function _is_cache_dir_writable($directory) { if (!isset(self::$cache_directories[$directory])) { self::$cache_directories[$directory] = Ai1ec_Filesystem_Utility::is_writable($directory); } return self::$cache_directories[$directory]; }