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);
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 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
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();
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); }); });
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
Download-Adresse
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!