强大的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); } } ?>
?基于文件的

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

De nombreux utilisateurs choisiront la marque Huawei lors du choix des montres intelligentes. Parmi eux, les Huawei GT3pro et GT4 sont des choix très populaires. De nombreux utilisateurs sont curieux de connaître la différence entre Huawei GT3pro et GT4. Quelles sont les différences entre Huawei GT3pro et GT4 ? 1. Apparence GT4 : 46 mm et 41 mm, le matériau est un miroir en verre + un corps en acier inoxydable + une coque arrière en fibre haute résolution. GT3pro : 46,6 mm et 42,9 mm, le matériau est du verre saphir + corps en titane/corps en céramique + coque arrière en céramique 2. GT4 sain : en utilisant le dernier algorithme Huawei Truseen5.5+, les résultats seront plus précis. GT3pro : ajout d'un électrocardiogramme ECG, d'un vaisseau sanguin et de la sécurité

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Pourquoi l'outil Snipping ne fonctionne pas sous Windows 11 Comprendre la cause première du problème peut aider à trouver la bonne solution. Voici les principales raisons pour lesquelles l'outil de capture peut ne pas fonctionner correctement : L'assistant de mise au point est activé : cela empêche l'ouverture de l'outil de capture. Application corrompue : si l'outil de capture plante au lancement, il est peut-être corrompu. Pilotes graphiques obsolètes : des pilotes incompatibles peuvent interférer avec l'outil de capture. Interférence provenant d'autres applications : d'autres applications en cours d'exécution peuvent entrer en conflit avec l'outil de capture. Le certificat a expiré : une erreur lors du processus de mise à niveau peut provoquer ce problème. Solution simple. Celles-ci conviennent à la plupart des utilisateurs et ne nécessitent aucune connaissance technique particulière. 1. Mettez à jour les applications Windows et Microsoft Store

La chose est en fait comme ça. À ce moment-là, mon chef m'a confié une tâche de surveillance des performances du matériel. Pendant le processus d'utilisation de perf, j'ai entré la liste des commandes perf et j'ai vu les informations suivantes : Ma tâche est d'activer ces événements de cache. être compté normalement. Mais le fait est que je n'ai aucune idée de ce que signifient ces ratés et ces charges.

Partie 1 : étapes de dépannage initiales Vérification de l'état du système Apple : avant d'aborder des solutions complexes, commençons par les bases. Le problème ne vient peut-être pas de votre appareil ; les serveurs Apple sont peut-être en panne. Visitez la page État du système d'Apple pour voir si l'AppStore fonctionne correctement. S'il y a un problème, tout ce que vous pouvez faire est d'attendre qu'Apple le résolve. Vérifiez votre connexion Internet : assurez-vous que vous disposez d'une connexion Internet stable, car le problème "Impossible de se connecter à l'AppStore" peut parfois être attribué à une mauvaise connexion. Essayez de basculer entre le Wi-Fi et les données mobiles ou de réinitialiser les paramètres réseau (Général > Réinitialiser > Réinitialiser les paramètres réseau > Paramètres). Mettez à jour votre version iOS :

L'utilisation du cache peut augmenter la vitesse de l'ordinateur car le cache réduit le temps d'attente du processeur. Le cache est une mémoire petite mais rapide située entre le processeur et la mémoire principale DRAM. La fonction du cache est d'augmenter le taux d'entrée et de sortie des données du processeur ; le cache a une petite capacité mais une vitesse rapide, tandis que la vitesse de la mémoire est faible mais a une grande capacité. En optimisant l'algorithme de planification, les performances du système seront améliorées. grandement amélioré.

Le cache est appelé mémoire cache. Il s'agit d'une mémoire haute vitesse de petite capacité entre l'unité centrale et la mémoire principale. Elle est généralement composée de SRAM haute vitesse. Ce type de mémoire locale est orienté vers le CPU. pour réduire ou éliminer l'écart entre le processeur et la mémoire. L'impact de la différence de vitesse entre eux sur les performances du système. La capacité du cache est petite mais rapide, la vitesse de la mémoire est faible mais la capacité est grande. En optimisant l'algorithme de planification, les performances du système seront grandement améliorées.

Préface La mise en cache peut améliorer efficacement les performances et la stabilité du système en stockant en mémoire les données fréquemment consultées, réduisant ainsi la pression sur les sources de données sous-jacentes telles que les bases de données. Je pense que tout le monde l'a plus ou moins utilisé dans ses projets, et notre projet ne fait pas exception. Cependant, lorsque j'ai récemment examiné le code de l'entreprise, l'écriture était très stupide et faible. L'écriture approximative est la suivante : publicUsergetById(Stringid) {Useruser=cache.getUser();if(user!=null){returnuser;}//Obtenir l'utilisateur de la base de données=loadFromDB(id);cahce.put(id,user);returnu
