Swoole 1.10.0 neue Version veröffentlicht, die viele neue Funktionsanalysen hinzufügt

jacklove
Freigeben: 2023-04-02 08:26:01
Original
1624 Leute haben es durchsucht

Swoole Version 1.10.0 wurde kürzlich veröffentlicht und bietet viele neue Funktionen. Der folgende Artikel stellt daher hauptsächlich relevante Informationen zu den neuen Funktionen in der Swoole 1.10.0-Version vor und teilt sie bei Bedarf als Referenz und zum Studium mit Freunden siehe

Vorwort

Swoole kann im Internet, in der Mobilkommunikation, in Unternehmenssoftware, in Cloud Computing, bei Online-Spielen usw. weit verbreitet eingesetzt werden das Internet der Dinge (IOT), das Internet der Fahrzeuge, Smart Home und andere Bereiche. Der Einsatz von PHP + Swoole als Netzwerkkommunikations-Framework kann die Effizienz von IT-Forschungs- und Entwicklungsteams in Unternehmen erheblich verbessern und sich stärker auf die Entwicklung innovativer Produkte konzentrieren. Kürzlich hat Swoole, die asynchrone, parallele und leistungsstarke Netzwerkkommunikations-Engine von PHP, Version 1.10.0 veröffentlicht. Diese Version fügt mehrere neue Funktionen hinzu. Im Folgenden gibt es nicht viel zu sagen. Werfen wir einen Blick auf die ausführliche Einführung.

Automatische DNS-Auflösung

Die neue Version des asynchronen Clients muss swoole_async_dns_lookup nicht mehr verwenden, um Domänennamen aufzulösen, und die Die unterste Ebene implementiert die automatische Analyse von Domänennamen. Der Client kann den Domänennamen direkt übergeben, wenn er die Verbindungsmethode ausführt.

$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function(swoole_client $cli) {
 $cli->send("GET / HTTP/1.1\r\n\r\n");
});
$client->on("receive", function(swoole_client $cli, $data){
 echo "Receive: $data";
 $cli->send(str_repeat('A', 100)."\n");
 sleep(1);
});
$client->on("error", function(swoole_client $cli){
 echo "error\n";
});
$client->on("close", function(swoole_client $cli){
 echo "Connection close\n";
});
//底层会自动进行异步域名解析
$client->connect('www.baidu.com', 9501);
Nach dem Login kopieren

Langsames Anforderungsprotokoll

Die neue Version fügt die Verfolgung von langsamen Anfragen hinzu Anfragen Funktion, die den PHP-Funktionsaufrufstapel langsamer Anfragen aufzeichnen kann.

function test()
{
 test_sleep();
}
function test_sleep()
{
 echo "sleep 5\n";
 sleep(5);
}
$server = new swoole_server('127.0.0.1', 9501);
$server->set([
 'worker_num' => 1,
 'task_worker_num' => 1,
 'trace_event_worker' => true,
 'request_slowlog_timeout' => 1,
 'request_slowlog_file' => '/tmp/trace.log',
]);
$server->on('Receive', function($serv, $fd, $reactor_id, $data) {
 test();
 $serv->send($fd, "Swoole: $data");
});
$server->start();
Nach dem Login kopieren

Nach der Verarbeitung der langsamen Anfrage wird eine Fehlermeldungszeile im /tmp/trace.log-Protokoll gedruckt:

[08-Jan-2018 15:21:57] [worker#0] pid 26905
[0x00007f60cda22340] sleep() /home/htf/workspace/swoole/examples/server/trace.php:10
[0x00007f60cda222e0] test_sleep() /home/htf/workspace/swoole/examples/server/trace.php:4
[0x00007f60cda22280] test() /home/htf/workspace/swoole/examples/server/trace.php:28
[0x00007f60cda22190] {closure}() /home/htf/workspace/swoole/examples/server/trace.php:42
[0x00007f60cda22140] start() /home/htf/workspace/swoole/examples/server/trace.php:42
Nach dem Login kopieren

Neues STREAM-Modul

Das neue Stream-Modul sorgt für die Kommunikation zwischen Reactor-, Worker- und Task-Prozessen komfortabler. Flexible, maximale Entkopplung. Komplexe Online-Projekte nutzen den Stream-Modus, um die Anforderungszuteilung und -planung effizienter zu gestalten.

$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
 'dispatch_mode' => 7,
 'worker_num' => 2,
));
$serv->on('receive', function (swoole_server $serv, $fd, $threadId, $data)
{
 var_dump($data);
 echo "#{$serv->worker_id}>> received length=" . strlen($data) . "\n";
});
$serv->start();
Nach dem Login kopieren

  • Kommunikation zwischen Reaktor und Worker, verwenden Sie „dispatch_mode = 7“, um die

  • -Kommunikation zu aktivieren Verwenden Sie zwischen Worker und Task task_ipc_mode = 4, um

Funktion „Event::cycle hinzufügen“

zu aktivieren Der Benutzercode kann eine EventLoop-Hook-Funktion anpassen, die am Ende jeder Runde der Ereignisschleife aufgerufen wird. Es ist praktisch, Generator + Yield oder das Promise-ähnliche Swoole-Framework zu verwenden, um Ihren eigenen Planer zu implementieren.

Swoole\Timer::tick(2000, function ($id) {
 var_dump($id);
});
Swoole\Event::cycle(function () {
 echo "hello [1]\n";
 Swoole\Event::cycle(function () {
 echo "hello [2]\n";
 Swoole\Event::cycle(null);
 });
});
Nach dem Login kopieren

Andere Updates

  • Update-Tabelle ::incr und Table::decr unterstützen vorzeichenbehaftete Ganzzahlen

  • Kompatibel mit PHP-7.2-Version

  • Fehler der Event::del-Funktion behoben Das Problem beim Entfernen des Standard-Eingabehandles

  • Das Problem, dass das Timer-Intervall im Task-Prozess kürzer als das Client-Empfangs-Timeout war, was zu einem Client::recv-Deadlock führte

  • Fügen Sie das Konfigurationselement ssl_host_name hinzu, um die Legitimität des SSL/TLS-Hosts zu überprüfen

  • Wenn „dispatch_mode = 3“ verwendet wird, wird ein Fehlerprotokoll gedruckt, wenn alle Worker sind beschäftigt

  • Fügen Sie einen Port-Iterator hinzu, um alle Verbindungen eines Überwachungsports zu durchlaufen

  • Beheben Sie das Speicherausrichtungsproblem von Table auf Nicht-x86-Plattformen

  • Beheben Sie das Problem einer ungültigen max_request-Konfiguration im BASE-Modus

  • Beheben Sie das Problem, dass der WebSocket-Server einen Paketfehler zurückgibt, wenn einige Client-Ping-Frames eine Maske enthalten Daten

  • Das Problem des Hängenbleibens, wenn HttpClient die HEAD-Methode verwendet, um mit Content-Length zu antworten, wurde behoben

  • Unterstützung des asynchronen MySQL-Clients für das JSON-Format erhöhen

Download-Adresse

GITHUB: https://github.com/swoole/swoole-src/ releases/tag/v1.10.0

Open Source China: https://gitee.com/swoole/swoole/tree/v1.10.0/

PECL: https://pecl.php .net/package/swoole/1.10.0

Lokaler Download: http://xiazai.jb51.net/201801/yuanma/swoole-src-1.10.0(jb51.net).rar

Zusammenfassung

Artikel, die Sie interessieren könnten:

PHP implementiert eine Druckmatrix im Uhrzeigersinn ( Beispielerklärung für eine Spiralmatrix-Methode

PHP-Methode zur Bestimmung, ob ein Binärbaum symmetrisch ist

PHP verwendet eine Zeile Codebeispiel zum Löschen aller Dateien in einem Verzeichnis

Das obige ist der detaillierte Inhalt vonSwoole 1.10.0 neue Version veröffentlicht, die viele neue Funktionsanalysen hinzufügt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage