Heim Backend-Entwicklung PHP-Tutorial Das Prinzip von easyswoole beim Starten des TableManager+Cache-Tools

Das Prinzip von easyswoole beim Starten des TableManager+Cache-Tools

Apr 26, 2019 pm 03:07 PM
cache

Der Hauptinhalt dieses Artikels besteht darin, den Easyswoole-Code zu beschreiben, um zu verstehen, wie TableManager gestartet wird, und das Prinzip des Cache-Tools. Er hat einen gewissen Referenzwert und interessierte Freunde müssen ihn verstehen.

EasySwoole ist ein speicherresidentes PHP-Framework, das auf Basis von Swoole Server entwickelt wurde. Es wurde für APIs entwickelt und beseitigt den Leistungsverlust, der durch den herkömmlichen PHP-Betriebsmodus beim Prozessstart und beim Laden von Dateien verursacht wird. EasySwoole kapselt Swoole Server in hohem Maße und behält gleichzeitig die ursprünglichen Funktionen von Swoole Server bei. Es unterstützt gleichzeitig die gemischte Überwachung von HTTP-, benutzerdefinierten TCP- und UDP-Protokollen, sodass Entwickler asynchrone und hochverfügbare Multiprozessanwendungen mit geringstem Aufwand schreiben können Lernaufwand und Aufwand.

swoole_table ist eine extrem leistungsstarke, gleichzeitige Datenstruktur, die auf gemeinsam genutztem Speicher und Sperren basiert. Wird zur Lösung von Problemen bei der Datenfreigabe bei mehreren Prozessen/Multithreads und bei der synchronen Sperrung verwendet.

TableManager macht hauptsächlich die folgenden Dinge
Methode hinzufügen
Wenn sich dieser Tabellenname im $list-Array befindet ($name ist ein Tabellenname oder Sammlungsname), initialisieren Sie swoole_table und konfigurieren Sie dann Create an Array von Feldtypen

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;
}
Nach dem Login kopieren

get-Methode
gibt direkt eine Instanz von swoole_table zurück.

Es gibt viele Orte, an denen es verwendet werden kann
Wie bereits erwähnt, führt die

-Konstruktionsmethode die folgenden Dinge aus, wenn das System die Cache-Komponente Cache::getInstance() festlegt

$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);
    }
}
Nach dem Login kopieren

ProcessManager ist auch ein sehr wichtiges Konzept. Tatsächlich handelt es sich um ein Tool zur Verwaltung der Aufgabenzuordnung.

Hier sehen Sie ProcessManager::getInstance()->addProcess($this->generateProcessName($i),CacheProcess::class)

In der Tat hier Wird übergeben, ermöglicht ProcessManager dem Swoole-Dienst das Hinzufügen eines Prozesses. swooles addProcess-Methode, Dokumentlink https://wiki.swoole.com/wiki/page/390.html

Lassen Sie uns im Voraus kurz die Set-Methode von Cache erklären, um sie zu vertiefen das Konzept.

//讲解一下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和它的相关作用.
}
Nach dem Login kopieren

Verwandte Tutorials: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDas Prinzip von easyswoole beim Starten des TableManager+Cache-Tools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist. Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist. Jul 31, 2023 pm 04:03 PM

Die Sache ist tatsächlich so. Zu diesem Zeitpunkt gab mir mein Leiter eine Perf-Hardware-Leistungsüberwachungsaufgabe. Während der Verwendung von Perf habe ich die folgenden Informationen eingegeben: Meine Aufgabe besteht darin, diese Cache-Ereignisse zu aktivieren normal gezählt werden. Aber der Punkt ist, ich habe keine Ahnung, was diese Fehlschläge und Belastungen bedeuten.

Warum erhöht die Verwendung des Caches die Computergeschwindigkeit? Warum erhöht die Verwendung des Caches die Computergeschwindigkeit? Dec 09, 2020 am 11:28 AM

Die Verwendung des Caches kann die Geschwindigkeit des Computers erhöhen, da der Cache die Wartezeit der CPU verkürzt. Cache ist ein kleiner, aber schneller Speicher, der zwischen der CPU und dem Hauptspeicher DRAM liegt. Die Funktion des Cache besteht darin, die Dateneingabe- und -ausgaberate der CPU zu erhöhen. Der Cache hat eine geringe Kapazität, aber eine hohe Geschwindigkeit, während die Speichergeschwindigkeit niedrig ist, aber eine große Kapazität aufweist. Durch die Optimierung des Planungsalgorithmus wird die Leistung des Systems verbessert stark verbessert.

Was ist Cache? Was ist Cache? Nov 25, 2022 am 11:48 AM

Cache wird als Cache-Speicher bezeichnet. Es handelt sich um einen Hochgeschwindigkeitsspeicher mit geringer Kapazität, der im Allgemeinen aus Hochgeschwindigkeits-SRAM besteht um die Lücke zwischen CPU und Speicher zu verringern oder zu beseitigen. Die Auswirkung des Geschwindigkeitsunterschieds zwischen ihnen auf die Systemleistung. Die Cache-Kapazität ist klein, aber schnell, die Speichergeschwindigkeit ist niedrig, aber die Kapazität ist groß. Durch die Optimierung des Planungsalgorithmus wird die Leistung des Systems erheblich verbessert.

Was sind die Eigenschaften von Cache, ROM und RAM? Was sind die Eigenschaften von Cache, ROM und RAM? Aug 26, 2022 pm 04:05 PM

Eigenschaften des Caches: Ein ein- oder zweistufiger Hochgeschwindigkeitsspeicher mit geringer Kapazität zwischen der CPU und dem Hauptspeicher. Die Informationen gehen natürlich verloren, wenn der Computer ausgeschaltet ist. Eigenschaften des ROM: Es kann nur Daten aus dem Speicher lesen, aber keine Informationen hineinschreiben. Die Daten bleiben auch nach dem Ausschalten des Computers bestehen. Eigenschaften des RAM: Er kann Daten aus dem Speicher lesen und Informationen in den Speicher schreiben; er wird zum Speichern von Befehlen, Programmen und Daten verwendet, die zum Ausführen des Programms erforderlich sind. Informationen gehen natürlich verloren, wenn der Computer ausgeschaltet ist.

Tutorial zum Nginx-Reverse-Proxy-Caching. Tutorial zum Nginx-Reverse-Proxy-Caching. Feb 18, 2024 pm 04:48 PM

Hier ist das Tutorial für das Nginx-Reverse-Proxy-Caching: Nginx installieren: sudoaptupdatesudoaptinstallnginx Reverse-Proxy konfigurieren: Nginx-Konfigurationsdatei öffnen: sudonano/etc/nginx/nginx.conf Fügen Sie die folgende Konfiguration im http-Block hinzu, um das Caching zu aktivieren: http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

So verwenden Sie den Cache im SpringBoot-Projekt So verwenden Sie den Cache im SpringBoot-Projekt May 16, 2023 pm 02:34 PM

Vorwort Caching kann die Systemleistung und -stabilität effektiv verbessern, indem es häufig aufgerufene Daten im Speicher speichert und so den Druck auf zugrunde liegende Datenquellen wie Datenbanken verringert. Ich denke, jeder hat es mehr oder weniger in seinen Projekten verwendet, und unser Projekt ist keine Ausnahme. Als ich jedoch kürzlich den Code des Unternehmens überprüfte, war der Text sehr dumm und niedrig. Der grobe Text lautet wie folgt: publicUsergetById(Stringid) {Useruser=cache. getUser();if(user!=null){returnuser;}//Benutzer aus der Datenbank abrufen=loadFromDB(id);cahce.put(id,user);returnu

Nginx-Cache-Konfigurationsplan und Lösung der damit verbundenen Speichernutzungsprobleme Nginx-Cache-Konfigurationsplan und Lösung der damit verbundenen Speichernutzungsprobleme May 23, 2023 pm 02:01 PM

5 Optionen für den Nginx-Caching-Cache 1. Einer der herkömmlichen Caches (404). Diese Methode besteht darin, den 404-Fehler von Nginx an das Backend weiterzuleiten und dann Proxy_store zu verwenden, um die vom Backend zurückgegebene Seite zu speichern. Konfiguration: Location/{root/home/html/;#Home-Verzeichnis läuft ab1d;#Ablaufzeit der Webseite error_page404=200/fetch$request_uri;#404 ​​​​Geleitet zum /fetch-Verzeichnis} Location/fetch/{#404 Geleitet internal ;#Gibt an, dass auf dieses Verzeichnis nicht direkt extern zugegriffen werden kann

So implementieren Sie den Second-Level-Cache von Caffeine+Redis basierend auf Spring Cache So implementieren Sie den Second-Level-Cache von Caffeine+Redis basierend auf Spring Cache Jun 01, 2023 am 10:13 AM

Die Details sind wie folgt: 1. Lassen Sie uns darüber sprechen, was ein hartcodierter Cache ist. Bevor ich SpringCache lernte, habe ich Caching oft hartcodiert verwendet. Nehmen wir ein praktisches Beispiel. Um die Abfrageeffizienz von Benutzerinformationen zu verbessern, verwenden wir das Caching für Benutzerinformationen keyStringcacheKey= "userId_

See all articles