Maison développement back-end tutoriel php Le principe du démarrage de l'outil TableManager+Cache par easyswoole

Le principe du démarrage de l'outil TableManager+Cache par easyswoole

Apr 26, 2019 pm 03:07 PM
cache

Le contenu principal de cet article est de décrire le code easyswoole pour comprendre comment démarrer TableManager et le principe de l'outil Cache. Il a une certaine valeur de référence et les amis intéressés doivent le comprendre.

EasySwoole est un framework PHP résidant en mémoire développé sur la base de Swoole Server. Il est conçu pour les API et élimine la perte de performances causée par le mode de fonctionnement PHP traditionnel lors de l'activation des processus et du chargement des fichiers. EasySwoole encapsule fortement Swoole Server tout en conservant les fonctionnalités d'origine de Swoole Server. Il prend en charge la surveillance mixte des protocoles HTTP, TCP personnalisés et UDP en même temps, permettant aux développeurs d'écrire des applications multi-processus, asynchrones et hautement disponibles avec le plus bas niveau possible. coût et effort d’apprentissage.

swoole_table est une structure de données simultanée ultra-haute performance basée sur la mémoire partagée et les verrous. Utilisé pour résoudre les problèmes de partage de données multi-processus/multi-thread et de verrouillage synchrone.

TableManager fait principalement les choses suivantes
ajouter une méthode
S'il y a ce nom de table dans le tableau $list ($name est un nom de table ou un nom de collection), initialisez swoole_table puis configurez Créer un un tableau de types de champs

if(!isset($this->list[$name])){
    $table = new Table($size);
    foreach ($columns as $column => $item){
        $table->column($column,$item['type'],$item['size']);
    }
    $table->create();
    $this->list[$name] = $table;
}
Copier après la connexion

méthode get
renvoie directement une instance de swoole_table.

Il existe de nombreux endroits pour l'utiliser
Comme mentionné précédemment, lorsque le système définit le composant Cache Cache::getInstance(), la

méthode de construction effectue les choses suivantes

$num = intval(Config::getInstance()->getConf("EASY_CACHE.PROCESS_NUM"));//Config默认配置是1,如果配置为小于等于0则不开启Cache
if($num <= 0){
   return;
}
$this->cliTemp = new SplArray();
//若是在主服务创建,而非单元测试调用
if(ServerManager::getInstance()->getServer()){
    //创建table用于数据传递
    TableManager::getInstance()->add(self::EXCHANGE_TABLE_NAME,[
        &#39;data&#39;=>[
            &#39;type&#39;=>Table::TYPE_STRING,
            &#39;size&#39;=>10*1024
        ],
        &#39;microTime&#39;=>[
            &#39;type&#39;=>Table::TYPE_STRING,
            &#39;size&#39;=>15
        ]
    ],2048);
    //创建了一个__Cache的swoole_table表,字段为 data String 10240,microTime String 15的表
    $this->processNum = $num;
    for ($i=0;$i < $num;$i++){
        ProcessManager::getInstance()->addProcess($this->generateProcessName($i),CacheProcess::class);
    }
}
Copier après la connexion

ProcessManager est également un concept très important. En fait, il s'agit d'un outil de gestion de la cartographie des tâches.

Ici vous pouvez voir ProcessManager::getInstance()->addProcess($this->generateProcessName($i),CacheProcess::class)

En fait, ici est passé ProcessManager permet au service swoole d'ajouter un processus. Méthode addProcess de swoole, lien vers le document https://wiki.swoole.com/wiki/page/390.html

Expliquons brièvement la méthode définie de Cache à l'avance pour approfondir le concept.

//讲解一下Cache的set方法加深概念
if(!ServerManager::getInstance()->isStart()){//兼容测试模式。也就是不开启服务的情景下直接是clitemp中取缓存数据
    $this->cliTemp->set($key,$data);
}
if(ServerManager::getInstance()->getServer()){
    $num = $this->keyToProcessNum($key);//这里是通过key然后hash到应该投放的Cache进程中去。
    $msg = new Msg();
    $msg->setCommand(&#39;set&#39;);
    $msg->setArg(&#39;key&#39;,$key);
    $msg->setData($data);
    //下面一句话还是挺复杂的,根据key名hash到ProcessManager对应的映射,然后获取到swoole_process的实例,以swoole的write函数向管道内写入数据。
    ProcessManager::getInstance()->getProcessByName($this->generateProcessName($num))->getProcess()->write(\swoole_serialize::pack($msg));
    //在写完数据后,在CacheProcess的onReceive方法中可以看到对应setCommand的操作细节。其实数据都被写到了一个Arr数组中。下篇接着讲一下Cache的实现细节。这节还是主要讲TableManager和它的相关作用.
}
Copier après la connexion

Tutoriels associés : Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Après avoir rejoint l'entreprise, j'ai compris ce qu'est Cache Après avoir rejoint l'entreprise, j'ai compris ce qu'est Cache Jul 31, 2023 pm 04:03 PM

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.

Pourquoi l'utilisation du cache augmente-t-elle la vitesse de l'ordinateur ? Pourquoi l'utilisation du cache augmente-t-elle la vitesse de l'ordinateur ? Dec 09, 2020 am 11:28 AM

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é.

Qu'est-ce que le cache ? Qu'est-ce que le cache ? Nov 25, 2022 am 11:48 AM

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.

Tutoriel de mise en cache du proxy inverse nginx. Tutoriel de mise en cache du proxy inverse nginx. Feb 18, 2024 pm 04:48 PM

Voici le tutoriel pour la mise en cache du proxy inverse nginx : Installez nginx : sudoaptupdatesudoaptinstallnginx Configurez le proxy inverse : Ouvrez le fichier de configuration nginx : sudonano/etc/nginx/nginx.conf Ajoutez la configuration suivante dans le bloc http pour activer la mise en cache : http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

Quelles sont les caractéristiques du cache, de la rom et de la ram ? Quelles sont les caractéristiques du cache, de la rom et de la ram ? Aug 26, 2022 pm 04:05 PM

Caractéristiques du cache : Une mémoire haute vitesse et de petite capacité à un ou deux niveaux située entre le processeur et la mémoire principale. Les informations sont naturellement perdues lorsque l'ordinateur est mis hors tension. Caractéristiques de la ROM : elle peut uniquement lire les données de la mémoire, mais ne peut pas y écrire d'informations. Les données existeront toujours après la mise hors tension de l'ordinateur. Caractéristiques de la RAM : elle peut lire les données de la mémoire et écrire des informations dans la mémoire ; elle est utilisée pour stocker les commandes, les programmes et les données nécessaires à l'exécution du programme ; les informations sont naturellement perdues lorsque l'ordinateur est éteint.

Comment utiliser le cache dans le projet SpringBoot Comment utiliser le cache dans le projet SpringBoot May 16, 2023 pm 02:34 PM

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

Plan de configuration du cache Nginx et comment résoudre les problèmes d'utilisation de la mémoire associés Plan de configuration du cache Nginx et comment résoudre les problèmes d'utilisation de la mémoire associés May 23, 2023 pm 02:01 PM

5 options pour le cache de mise en cache nginx 1. L'un des caches traditionnels (404) Cette méthode consiste à diriger l'erreur 404 de nginx vers le backend, puis à utiliser proxy_store pour enregistrer la page renvoyée par le backend. Configuration : Emplacement/{root/home/html/;#Home directory expires1d;#Délai d'expiration de la page Web error_page404=200/fetch$request_uri;#404 ​​​​​​Dirigé vers le répertoire /fetch} Location/fetch/{#404 Dirigé hereinternal ;#Indique que ce répertoire n'est pas directement accessible en externe

Comment implémenter le cache de deuxième niveau Caffeine+Redis basé sur Spring Cache Comment implémenter le cache de deuxième niveau Caffeine+Redis basé sur Spring Cache Jun 01, 2023 am 10:13 AM

Les détails sont les suivants : 1. Parlons de ce qu'est le cache codé en dur ? Avant d'apprendre SpringCache, j'utilisais souvent la mise en cache de manière codée en dur. Prenons un exemple pratique. Afin d'améliorer l'efficacité des requêtes sur les informations utilisateur, nous utilisons la mise en cache pour les informations utilisateur. L'exemple de code est le suivant : @AutowireprivateUserMapperuserMapper ; @AutowireprivateRedisCacheredisCache ;//Query users publicUsergetUserById(LonguserId){//Define cache. keyStringcacheKey= "userId_

See all articles