PHP Microservice Framework: Swoft v2.0.7 Sortie dans les délais


Qu'est-ce que Swoft?


Swoft est un framework de coroutine de microservices hautes performances PHP. Il est publié depuis de nombreuses années et est devenu le meilleur choix pour php. Il peut être comme Go, serveur Web coroutine intégré et client coroutine commun et réside en mémoire, indépendamment du PHP-FPM traditionnel. Il existe des opérations de langage Go similaires, similaires aux annotations flexibles du framework Spring Cloud.


Grâce à trois années d'accumulation et d'exploration de directions, Swoft a fait de Swoft le Spring Cloud dans le monde PHP, qui est le meilleur choix pour le cadre hautes performances de PHP et la gestion des microservices.


Github


https://github.com/swoft-cloud/swoft


Swoft v2.0.7


Swoft v2.0.7 continue de naviguer sur la v2.0.6 et a été utilisé dans un grand nombre d'opérations de production, ce qui a été reconnu et pris en charge par de nombreux utilisateurs. La version officielle a fait beaucoup d'améliorations et d'optimisations, avec de meilleures performances.


  • Ajout du composant de fonction Http Session, fournit une gestion de session http, prend en charge plusieurs pilotes de stockage
  • Prise en charge améliorée des demandes de serveur TCP pour ajouter un middleware de méthode global ou correspondant
  • Prise en charge améliorée des demandes de message du serveur Websocket pour l'ajout d'un middleware de méthode global ou correspondant

Session HTTP


Installer le composant swoft / session avec Composer


  • Exécuter composer require swoft/session dans le répertoire où se trouve le projet composer.json.
  • Ajouter le Swoft\Http\Session\SessionMiddleware middleware global

Dans app/bean.php :


  'httpDispatcher' => [ // Add global http middleware 'middlewares' => [ \Swoft\Http\Session\SessionMiddleware::class, ], ], 

La valeur par défaut est basée sur des pilotes de fichiers locaux, enregistrés dans le répertoire runtime/sessions

Plus d'informations sur le pilote suffit de configurer le handler correspondant.
Par exemple, configurez le pilote Redis :


 'sessionHandler' => [ 'class' => RedisHandler::class, // Config redis pool 'redis' => bean('redis.pool') ], 

Intergiciel de messagerie Websocket


  • Middleware mondial

Configuré dans app/bean.php :


  /** @see \Swoft\WebSocket\Server\WsMessageDispatcher */ 'wsMsgDispatcher' => [ 'middlewares' => [ \App\WebSocket\Middleware\GlobalWsMiddleware::class ], ], 

  • Agir sur le contrôleur

 /** * Class HomeController * * @WsController(middlewares={DemoMiddleware::class}) */ class TestController {} 

Middleware de requête TCP


  • Middleware mondial

Configuré dans app/bean.php :


  /** @see \Swoft\Tcp\Server\TcpDispatcher */ 'tcpDispatcher' => [ 'middlewares' => [ \App\Tcp\Middleware\GlobalTcpMiddleware::class ], ], 

  • Agir sur le contrôleur

 /** * Class DemoController * * @TcpController(middlewares={DemoMiddleware::class}) */ class DemoController { // .... } 

Journal de mise à jour


Conseils de mise à niveau:
  • Swoole\WebSocket\Server::push Le quatrième paramètre $finish été changé en type int après swoole 4.4.12 .
  • Le paramètre d'événement TcpServerEvent::CONNECT du serveur tcp reste identique à la réception et à la fermeture. $fd, $server positions de swap de $fd, $server .


Github


https://github.com/swoft-cloud/swoft


Fixe :


  • Lors de la correction de l'injection de configuration, si la valeur n'est pas trouvée, la valeur par défaut du type correspondant sera utilisée pour remplacer l'attribut, provoquant l'écrasement de la valeur par défaut de l'attribut d84d50a7
  • Corrigé lors de l'utilisation de la planification des messages dans le serveur WS, aucune donnée vide n'était filtrée, ce qui entraînait une réponse supplémentaire. Évitez la méthode swoft-cloud / swoft # 1002 [d84d50a7] ( https://github.com/swoft-cloud/swoft-component/ Pull / 522 / commits / d84d50a76c4c7ff19dc0896868745cfe8f0d93c9)
  • Corrigé lors de l'utilisation de la planification des messages sur le serveur TCP, aucune donnée vide n'était filtrée, ce qui entraînait une réponse supplémentaire. 07a01ba1
  • Correction des dépendances manquantes de la bibliothèque swoft / stdlib lors de l'utilisation indépendante du composant de console c569c81a
  • Fixed ArrayHelper::get Lorsque la clé d'entrée est un entier, le paramètre paramètre est incorrect a44dcad
  • Correction du rendu de la console à l'aide du tableau, lors du calcul de la valeur int, calcul de l'erreur de type de rapport de largeur 74a835ab

  • Correction d'une erreur dans l'utilisateur du composant ne peut pas personnaliser le niveau de gestion des erreurs par défaut 4c78aeb
  • Fixer Activer et désactiver les paramètres des composants isEnable() ne fonctionne pas da8c51e56
  • Corrections L'utilisation de la méthode uniqid() dans l'environnement cygwin doit définir le deuxième paramètre sur true c7f688f
  • Correction de l'impossibilité de définir le titre du processus dans l'environnement cygwin et de provoquer l'erreur c466f6a
  • Correction de la suppression des données des cookies du navigateur à l'aide de la response->delCookie() 8eb9241
  • Correction de la répartition des messages du serveur WS, les données ext reçues ne sont pas nécessairement un tableau provoquant une erreur ff45b35
  • Correction du fichier journal divisé par le temps c195413
  • Résoudre le petit problème de format JSON du journal a3fc6b9
  • Le fournisseur de services getList appelle GetList deux fois FD03E71
  • redis cluster ne prend pas en charge le paramètre d' authentification 7a678f
  • Correction du type json requête de modèle, ne prend pas en charge le array 6023a9
  • Correction du fonctionnement multi redis non connecté à temps e5f698
  • Fix redis ne prend pas en charge expireAt , geoRadius 749241
  • Correction du problème de déviation de détection d'horodatage Crontab EB08A46

Mise à jour (mise à jour) :


  • La console de mise à jour émet également un événement avant d' ConsoleEvent::SHOW_HELP_BEFORE message d'aide ConsoleEvent::SHOW_HELP_BEFORE d3f7bc3
  • Simplifier et unifier la logique de commande de gestion de serveur http, ws, tcp, rpc f202c826
  • Mettez à jour les classes de connexion ws et tcp pour ajouter les méthodes newFromArray et toArray afin de faciliter l'exportation des informations et la restauration des connexions via un stockage tiers ( redis ) [a8b0b7c] ( https://github.com/swoft-cloud/swoft -component / pull / 528 / commits / a8b0b7c77d56d4392eba75d13a911816b9dc0cee)
  • Optimiser le serveur pour ajouter un gestionnaire d'événement de message de canal swoole unifié, utiliser l'événement swowt dans ws, tcp pour gérer les messages interprocessus 1c51a8c

Amélioration :


  • Désormais, les requêtes tcp prennent en charge l'ajout d'un middleware de méthode global ou correspondant, et le processus et l'utilisation sont similaires au middleware http. Utile uniquement lors de l'utilisation de la planification système 6b593877
  • Désormais, la demande de message Websocket prend en charge l'ajout d'un middleware de méthode global ou correspondant, et le processus et l'utilisation sont similaires au middleware http. Utile uniquement lors de l'utilisation de la planification système 9739815
  • La gestion des événements permet de définir destroyAfterFire pour nettoyer les données transportées dans l'événement après chaque envoi d'événement 50bf43d3
  • Le code ajouté d'exception d'erreur de base de données renvoie fd306f4
  • Opération sur le fichier writeFile Nouvelle exception d'échec d'écriture 08c4244
  • Vérification des nouveaux paramètres RPC 8646fc5

Github


https://github.com/swoft-cloud/swoft

Source: https://habr.com/ru/post/fr476508/


All Articles