PHP Microservice Framework: Veröffentlichung von Swoft v2.0.7 im Zeitplan


Was ist Swoft?


Swoft ist ein PHP-Hochleistungs-Microservice-Coroutine-Framework. Es wurde seit vielen Jahren veröffentlicht und ist die beste Wahl für PHP geworden. Es kann wie Go, ein eingebauter Coroutine-Webserver und ein allgemeiner Coroutine-Client sein und befindet sich unabhängig von traditionellem PHP-FPM im Arbeitsspeicher. Es gibt ähnliche Sprachoperationen für Go wie die flexiblen Anmerkungen des Spring Cloud Framework.


Durch drei Jahre Erfahrung in der Ansammlung und in der Erforschung der Richtung hat Swoft Swoft zur Frühlingswolke in der PHP-Welt gemacht. Dies ist die beste Wahl für das leistungsstarke Framework- und Microservices-Management von PHP.


Github


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


Swoft v2.0.7


Swoft v2.0.7 fährt mit v2.0.6 und wurde in einer Vielzahl von Produktionsabläufen eingesetzt, die von vielen Benutzern erkannt und unterstützt wurden. Die offizielle Version hat viele Verbesserungen und Optimierungen vorgenommen, mit einer besseren Leistung.


  • Die Funktionskomponente "HTTP-Sitzung" wurde hinzugefügt. Sie bietet HTTP-Sitzungsverwaltung und unterstützt mehrere Speichertreiber
  • Erweiterte Unterstützung für TCP-Server-Anforderungen, um globale oder entsprechende Methoden-Middleware hinzuzufügen
  • Verbesserte Unterstützung für Websocket-Server-Nachrichtenanforderungen zum Hinzufügen von globaler oder entsprechender Methoden-Middleware

HTTP-Sitzung


Installieren Sie die swoft / session-Komponente mit Composer


  • composer require swoft/session in dem Verzeichnis, in dem sich das Projekt composer.json befindet.
  • Fügen Swoft\Http\Session\SessionMiddleware der globalen Middleware die Middleware Swoft\Http\Session\SessionMiddleware

In app/bean.php :


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

Die Standardeinstellung basiert auf lokalen Dateitreibern, die im runtime/sessions gespeichert sind

Mehr zum Treiber muss nur der entsprechende handler konfiguriert werden.
Konfigurieren Sie beispielsweise den Redis Treiber:


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

Websocket-Messaging-Middleware


  • Globale Middleware

Konfiguriert in app/bean.php :


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

  • Auf die Steuerung einwirken

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

TCP Request Middleware


  • Globale Middleware

Konfiguriert in app/bean.php :


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

  • Auf die Steuerung einwirken

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

Protokoll aktualisieren


Upgrade-Tipps:
  • Swoole\WebSocket\Server::push Der vierte Parameter $finish wurde nach swoole 4.4.12 in int type 4.4.12 .
  • Der Ereignisparameter TcpServerEvent::CONNECT des TCP-Servers bleibt derselbe wie receive und close. $fd, $server Swap-Positionen.


Github


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


Behoben :


  • Wenn beim Korrigieren der Konfigurationsinjektion der Wert nicht gefunden wird, wird der Standardwert des entsprechenden Typs zum Überschreiben des Attributs verwendet, wodurch der Standardwert des Attributs überschrieben wird. D84d50a7
  • Bei der Verwendung des Nachrichtenzeitplans auf dem WS-Server wurden keine leeren Daten gefiltert, was zu einer weiteren Antwort führte. Vermeiden Sie die Methode swoft-cloud / swoft # 1002 [d84d50a7] ( https://github.com/swoft-cloud/swoft-component/ Pull / 522 / commits / d84d50a76c4c7ff19dc0896868745cfe8f0d93c9)
  • Bei Verwendung der Nachrichtenplanung im TCP-Server wurden keine leeren Daten gefiltert, was zu einer weiteren Antwort führte. 07a01ba1
  • Fehlende Abhängigkeiten der swoft / stdlib-Bibliothek behoben, wenn die Konsolenkomponente c569c81a unabhängig verwendet wurde
  • ArrayHelper::get Wenn die Eingabetaste eine Ganzzahl ist, ist der Parameter parameter a44dcad falsch
  • Korrigieren Sie das Konsolen-Rendering mithilfe der Tabelle, und berechnen Sie bei der Berechnung des int-Werts den Breitenberichtstyp-Fehler 74a835ab


Update (Aktualisierung) :


  • Die Update-Konsole gibt auch ein Ereignis aus, bevor die ConsoleEvent::SHOW_HELP_BEFORE d3f7bc3 angezeigt wird
  • Vereinfachen und vereinheitlichen Sie die Befehlslogik für die Serververwaltung http, ws, tcp, rpc f202c826
  • Aktualisieren Sie die Verbindungsklassen ws und tcp, und fügen Sie die Methoden newFromArray und toArray , um den Export von Informationen und die Wiederherstellung von Verbindungen über den Speicher eines Drittanbieters ( redis ) [a8b0b7c] ( https://github.com/swoft-cloud/swoft -component / pull) zu erleichtern / 528 / commits / a8b0b7c77d56d4392eba75d13a911816b9dc0cee)
  • Optimieren Sie den Server, um einen einheitlichen Ereignishandler für Swoole-Pipe-Nachrichten hinzuzufügen. Verwenden Sie das Ereignis swowt in ws, tcp, um Interprozessnachrichten 1c51a8c zu verarbeiten

Verbesserung :


  • Tcp-Anfragen unterstützen jetzt das Hinzufügen globaler oder entsprechender Methoden-Middleware, und der Prozess und die Verwendung ähneln der http-Middleware. Nützlich nur bei Verwendung der Systemplanung 6b593877
  • Jetzt unterstützt die Websocket-Nachrichtenanforderung das Hinzufügen einer globalen oder entsprechenden Methoden-Middleware, und der Prozess und die Verwendung ähneln der http-Middleware. Nützlich nur bei Verwendung der Systemplanung 9739815
  • Mit der Ereignisverwaltung können Sie destroyAfterFire einstellen, dass die im Ereignis enthaltenen Daten nach jeder Ereignisauslösung 50bf43d3 bereinigt werden
  • Der hinzugefügte code Datenbankfehlerausnahme gibt fd306f4 zurück
  • Coroutine-Dateioperation writeFile Ausnahme 08c4244 bei neuem Schreibfehler
  • RPC-Überprüfung neuer Parameter 8646fc5

Github


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

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


All Articles