强大的PHP缓存种(eaccelerator、apc、xcache、memcache模块缓存)
强大的PHP缓存类(eaccelerator、apc、xcache、memcache模块缓存)
<?php /* * Name: wrapperCache * URL: http://www.admpub.com/ * Version: v0.1 * Date: 29/10/2010 * Author: Chema Garrido * License: GPL v3 * Notes: wrapper cache for fileCache, memcache, APC, Xcache and eaccelerator */ class wrapperCache { private $cache_params;//extra params for external caches like path or connection option memcached public $cache_expire;//seconds that the cache expires private $cache_type;//type of cache to use private $cache_external; //external instance of cache, can be fileCache or memcache private static $instance;//Instance of this class // Always returns only one instance public static function GetInstance($type='auto',$exp_time=3600,$params='cache/'){ if (!isset(self::$instance)){//doesn't exists the isntance self::$instance = new self($type,$exp_time,$params);//goes to the constructor } return self::$instance; } //cache constructor, optional expiring time and cache path private function __construct($type,$exp_time,$params){ $this->cache_expire=$exp_time; $this->cache_params=$params; $this->setCacheType($type); } public function __destruct() { unset($this->cache_external); } // Prevent users to clone the instance public function __clone(){ $this->cacheError('Clone is not allowed.'); } //deletes cache from folder public function clearCache(){ switch($this->cache_type){ case 'eaccelerator': @eaccelerator_clean(); @eaccelerator_clear(); break; case 'apc': apc_clear_cache('user'); break; case 'xcache': xcache_clear_cache(XC_TYPE_VAR, 0); break; case 'memcache': @$this->cache_external->flush(); break; case 'filecache': $this->cache_external->deleteCache(); break; } } //writes or reads the cache public function cache($key, $value='',$ttl=''){ if ($value!=''){//wants to write if ($ttl=='') $ttl=$this->cache_expire; $this->put($key, $value,$ttl); } else return $this->get($key);//reading value } //creates new cache files with the given data, $key== name of the cache, data the info/values to store private function put($key,$data,$ttl='' ){ if ($ttl=='') $ttl=$this->cache_expire; switch($this->cache_type){ case 'eaccelerator': eaccelerator_put($key, serialize($data), $ttl); break; case 'apc': apc_store($key, $data, $ttl); break; case 'xcache': xcache_set($key, serialize($data), $ttl); break; case 'memcache': $data=serialize($data); if (!$this->cache_external->replace($key, $data, false, $ttl)) $this->cache_external->set($key, $data, false, $ttl); break; case 'filecache': $this->cache_external->cache($key,$data); break; } } //returns cache for the given key private function get($key){ switch($this->cache_type){ case 'eaccelerator': $data = @unserialize(eaccelerator_get($key)); break; case 'apc': $data = apc_fetch($key); break; case 'xcache': $data = @unserialize(xcache_get($key)); break; case 'memcache': $data = @unserialize($this->cache_external->get($key)); break; case 'filecache': $data = $this->cache_external->cache($key); break; } /*echo '<br>--returnning data for key:'.$key; var_dump($data);*/ return $data; } //delete key from cache public function delete($key){ switch($this->cache_type){ case 'eaccelerator': eaccelerator_rm($key); break; case 'apc': apc_delete($key); break; case 'xcache': xcache_unset($key); break; case 'memcache': $this->cache_external->delete($key); break; case 'filecache': $this->cache_external->delete($key); break; } } // Overloading for the Application variables and automatically cached public function __set($name, $value) { $this->put($name, $value, $this->cache_expire); } public function __get($name) { return $this->get($name); } public function __isset($key) {//echo "Is '$name' set?\n" if ($this->get($key) !== false) return true; else return false; } public function __unset($name) {//echo "Unsetting '$name'\n"; $this->delete($name); } //end overloads public function getCacheType(){ return $this->$this->cache_type; } //sets the cache if its installed if not triggers error public function setCacheType($type){ $this->cache_type=strtolower($type); switch($this->cache_type){ case 'eaccelerator': if (function_exists('eaccelerator_get')) $this->cache_type = 'eaccelerator'; else $this->cacheError('eaccelerator not found'); break; case 'apc': if (function_exists('apc_fetch')) $this->cache_type = 'apc' ; else $this->cacheError('APC not found'); break; case 'xcache': if (function_exists('xcache_get')) $this->cache_type = 'xcache' ; else $this->cacheError('Xcache not found'); break; case 'memcache': if (class_exists('Memcache')) $this->init_memcache(); else $this->cacheError('memcache not found'); break; case 'filecache': if (class_exists('fileCache'))$this->init_filecache(); else $this->cacheError('fileCache not found'); break; case 'auto'://try to auto select a cache system if (function_exists('eaccelerator_get')) $this->cache_type = 'eaccelerator'; elseif (function_exists('apc_fetch')) $this->cache_type = 'apc' ; elseif (function_exists('xcache_get')) $this->cache_type = 'xcache' ; elseif (class_exists('Memcache')) $this->init_memcache(); elseif (class_exists('fileCache')) $this->init_filecache(); else $this->cacheError('not any compatible cache was found'); break; default://not any cache selected or wrong one selected if (isset($type)) $msg='Unrecognized cache type selected <b>'.$type.'</b>'; else $msg='Not any cache type selected'; $this->cacheError($msg); break; } } private function init_memcache(){//get instance of the memcache class if (is_array($this->cache_params)){ $this->cache_type = 'memcache'; $this->cache_external = new Memcache; foreach ($this->cache_params as $server) { $server['port'] = isset($server['port']) ? (int) $server['port'] : ini_get('memcache.default_port'); $server['persistent'] = isset($server['persistent']) ? (bool) $server['persistent'] : true; $this->cache_external->addServer($server['host'], $server['port'], $server['persistent']); } } else $this->cacheError('memcache needs an array, example: wrapperCache::GetInstance(\'memcache\',30,array(array(\'host\'=>\'localhost\')));'); } private function init_filecache(){//get instance of the filecache class $this->cache_type = 'filecache'; $this->cache_external = fileCache::GetInstance($this->cache_expire,$this->cache_params); } public function getAvailableCache($return_format='html'){//returns the available cache $avCaches = array(); $avCaches[] = array('eaccelerator',function_exists('eaccelerator_get')); $avCaches[] = array('apc',function_exists('apc_fetch')) ; $avCaches[] = array('xcache',function_exists('xcache_get')); $avCaches[] = array('memcache',class_exists('Memcache')); $avCaches[] = array('fileCache',class_exists('fileCache')); if ($return_format=='html'){ $ret='
- ';
foreach ($avCaches as $c){
$ret.='
- '.$c[0].' - '; if ($c[1]) $ret.='Found/Compatible'; else $ret.='Not Found/Incompatible'; $ret.=''; } return $ret.'
wrapperCache error: '.$msg. '
If you want you can try with \'auto\' for auto select a compatible cache.
Or choose a supported cache from list:'.$this->getAvailableCache(), E_USER_ERROR); } } ?>
?基于文件的

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

function是函數的意思,是一段具有特定功能的可重複使用的程式碼區塊,是程式的基本組成單元之一,可以接受輸入參數,執行特定的操作,並傳回結果,其目的是封裝一段可重複使用的程式碼,提高程式碼的可重複使用性和可維護性。

事情其實是這樣的,當時領導者交給我一個perf硬體效能監視的任務,在使用perf的過程中,輸入指令perf list,我看到了以下資訊:我的任務就要讓這些cache事件能夠正常計數,但重點是,我根本不知道這些misses、loads是什麼意思。

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

使用cache可以提高電腦運行速度這是因為Cache縮短了CPU的等待時間。 Cache是位於CPU和主記憶體DRAM之間,規模較小,但速度很高的記憶體。 Cache的功能是提高CPU資料輸入輸出的速率;Cache容量小但速度快,記憶體速度較低但容量大,透過最佳化調度演算法,系統的效能會大幅提升。

cache的特性:在CPU與主記憶體之間設定的一級或兩級高速小容量記憶體,其資訊是隨著電腦的斷電自然遺失。 ROM的特性:只能從記憶體讀取數據,而不能往裡面寫訊息,電腦斷電後數據仍然存在。 ram的特點:既可以從記憶體讀取數據,也可以到記憶體中寫入資訊;用於存放運行程式所需的命令、程式和資料等;電腦斷電後資訊自然遺失。

前言快取可以透過將經常存取的資料儲存在記憶體中,減少底層資料來源如資料庫的壓力,從而有效提高系統的效能和穩定性。我想大家的專案中或多或少都有使用過,我們專案也不例外,但是最近在review公司的程式碼的時候寫的很蠢且low,大致寫法如下:publicUsergetById(Stringid){Useruser=cache. getUser();if(user!=null){returnuser;}//從資料庫取得user=loadFromDB(id);cahce.put(id,user);returnu

以下是nginx反向代理快取的教學:安裝nginx:sudoaptupdatesudoaptinstallnginx設定反向代理:開啟nginx設定檔:sudonano/etc/nginx/nginx.conf在http區塊中加入以下設定來啟用快取:http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache
