Table des matières
Articles qui pourraient vous intéresser :
Maison développement back-end tutoriel php Sortie de la nouvelle version de Swoole 1.10.0, ajoutant de nombreuses nouvelles analyses de fonctionnalités

Sortie de la nouvelle version de Swoole 1.10.0, ajoutant de nombreuses nouvelles analyses de fonctionnalités

Jul 02, 2018 pm 05:58 PM
swoole 版本

La version 1.10.0 de Swoole a été récemment publiée, ajoutant de nombreuses nouvelles fonctionnalités. L'article suivant présente donc principalement des informations pertinentes sur les nouvelles fonctionnalités de la version 1.10.0 de Swoole et les partage pour votre référence et votre étude, si nécessaire. Les amis peuvent se référer à l'

Avant-propos

Swoole peut être largement utilisé dans Internet, les communications mobiles, les logiciels d'entreprise, le cloud computing, les jeux en ligne et le Internet des objets (IOT), Internet des véhicules, maison intelligente et autres domaines. L'utilisation de PHP + Swoole comme cadre de communication réseau peut considérablement améliorer l'efficacité des équipes de R&D informatique de l'entreprise et se concentrer davantage sur le développement de produits innovants. Récemment, Swoole, le moteur de communication réseau asynchrone, parallèle et hautes performances de PHP, a publié la version 1.10.0. Cette version ajoute plusieurs nouvelles fonctionnalités. Pas grand chose à dire ci-dessous, jetons un œil à l’introduction détaillée.

Résolution DNS automatique

La nouvelle version du client asynchrone n'a plus besoin d'utiliser swoole_async_dns_lookup pour résoudre les noms de domaine, et le la couche inférieure implémente l'analyse automatique des noms de domaine. Le client peut transmettre directement le nom de domaine lors de l'exécution de la méthode de connexion.

$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);
Copier après la connexion

Journal des demandes lentes

La nouvelle version ajoute le suivi La fonction de requête lente peut enregistrer la pile d'appels de fonction PHP des requêtes lentes.

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();
Copier après la connexion

Après le traitement de la requête lente, une ligne de message d'erreur sera imprimée dans le journal /tmp/trace.log :

[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
Copier après la connexion

Nouveau module STREAM

Le nouveau module stream permet la connexion entre Reactor, Processus des travailleurs et des tâches La méthode de communication est plus flexible et plus découplée. Les projets en ligne complexes utilisent le mode flux pour rendre l'allocation et la planification des demandes plus efficaces.

$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();
Copier après la connexion

  • Communication entre le réacteur et le travailleur, utilisez dispatch_mode = 7 pour activer

  • Communication entre Worker et Task, utilisez task_ipc_mode = 4 pour activer

Ajouter une fonction Event::cycle

Le code utilisateur peut personnaliser une fonction hook EventLoop, qui sera appelée à la fin de chaque tour de boucle d'événement. Il est pratique d'utiliser le framework Generator + Yield ou Swoole de type Promise pour implémenter votre propre planificateur.

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);
 });
});
Copier après la connexion

Autres mises à jour

  • Mettre à jour Table::incr et Table::decr pour prendre en charge les entiers signés

  • Compatible avec la version PHP-7.2

  • Fix Event::del The problème selon lequel la fonction ne peut pas supprimer le handle d'entrée standard

  • Correction du problème selon lequel l'intervalle de minuterie dans le processus de tâche est inférieur au délai d'attente de réception du client, provoquant une impasse Client::recv

  • Ajoutez l'élément de configuration ssl_host_name pour vérifier la légitimité de l'hôte SSL/TLS

  • Lorsque dispatch_mode = 3 est utilisé, un journal des erreurs sera imprimé lorsque tous les Workers sont occupés

  • Ajouter un itérateur de port pour parcourir toutes les connexions d'un port d'écoute

  • Résoudre le problème d'alignement de la mémoire de Table sur les non- Plateformes x86

  • Correction du problème de configuration max_request non valide en mode BASE

  • Correction du serveur WebSocket renvoyant le mauvais paquet lorsque certaines trames ping client contiennent Problème de données de masque

  • Correction du problème selon lequel HttpClient utilise la méthode HEAD pour répondre au contenu transportant Content-Length, ce qui le bloque

  • Augmenter la prise en charge du client asynchrone MySQL pour le format JSON Prise en charge

Adresse de téléchargement

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

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

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

Téléchargement local : http://xiazai.jb51.net/201801/yuanma/swoole-src-1.10 .0(jb51.net).rar

Résumé

Articles qui pourraient vous intéresser :

PHP implémente l'impression dans le sens des aiguilles d'une montre Exemples de méthode matricielle (matrice spirale)

Explication de la méthode PHP pour déterminer si un arbre binaire est symétrique

Utilisation de PHP Un exemple de la façon de supprimer tous les fichiers d'un répertoire avec une seule ligne de code

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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

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)

Comment vérifier rapidement la version numpy Comment vérifier rapidement la version numpy Jan 19, 2024 am 08:23 AM

Comment vérifier rapidement la version numpy

Comment vérifier la version de Maven Comment vérifier la version de Maven Jan 17, 2024 pm 05:06 PM

Comment vérifier la version de Maven

Tutoriel sur la mise à jour de la version curl sous Linux ! Tutoriel sur la mise à jour de la version curl sous Linux ! Mar 07, 2024 am 08:30 AM

Tutoriel sur la mise à jour de la version curl sous Linux !

Étapes simples pour mettre à jour la version pip : effectuée en 1 minute Étapes simples pour mettre à jour la version pip : effectuée en 1 minute Jan 27, 2024 am 09:45 AM

Étapes simples pour mettre à jour la version pip : effectuée en 1 minute

Vérifiez la version du système d'exploitation Kirin et la version du noyau Vérifiez la version du système d'exploitation Kirin et la version du noyau Feb 21, 2024 pm 07:04 PM

Vérifiez la version du système d'exploitation Kirin et la version du noyau

Interpréter le sens et la différence de la version PHP NTS Interpréter le sens et la différence de la version PHP NTS Mar 27, 2024 am 11:48 AM

Interpréter le sens et la différence de la version PHP NTS

Comment installer facilement Python sur Windows, vous pouvez choisir parmi deux méthodes Comment installer facilement Python sur Windows, vous pouvez choisir parmi deux méthodes Feb 18, 2024 pm 04:57 PM

Comment installer facilement Python sur Windows, vous pouvez choisir parmi deux méthodes

Comment vérifier facilement la version installée d'Oracle Comment vérifier facilement la version installée d'Oracle Mar 07, 2024 am 11:27 AM

Comment vérifier facilement la version installée d'Oracle

See all articles