PHP Microservice Framework: lanzamiento de Swoft v2.0.7 según lo programado


¿Qué es swoft?


Swoft es un marco de trabajo de rutina de microservicio de alto rendimiento de PHP. Se ha publicado durante muchos años y se ha convertido en la mejor opción para php. Puede ser como Go, un servidor web de rutina incorporado y un cliente de rutina común y reside en la memoria, independiente del PHP-FPM tradicional. Existen operaciones de lenguaje Go similares, similares a las anotaciones flexibles del marco Spring Cloud.


A través de tres años de acumulación y exploración de direcciones, Swoft ha convertido a Swoft en la Nube de Primavera en el mundo PHP, que es la mejor opción para el marco de trabajo de alto rendimiento y la gestión de microservicios de PHP.


Github


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


Swoft v2.0.7


Swoft v2.0.7 continúa navegando en v2.0.6 y se ha utilizado en una gran cantidad de operaciones de producción, lo cual ha sido reconocido y respaldado por muchos usuarios. La versión oficial ha realizado muchas mejoras y optimizaciones, con un mejor rendimiento.


  • Se agregó el componente de función Http Session, proporciona administración de sesión http, admite múltiples controladores de almacenamiento
  • Soporte de solicitud de servidor TCP mejorado para agregar middleware de método global o correspondiente
  • Soporte mejorado de solicitud de mensajes del servidor Websocket para agregar middleware de método global o correspondiente

Sesión HTTP


Instale el componente swoft / session con Composer


  • Ejecutar composer require swoft/session en el directorio donde se encuentra el proyecto composer.json.
  • Agregue el Swoft\Http\Session\SessionMiddleware middleware global

En app/bean.php :


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

El valor predeterminado se basa en controladores de archivos locales, guardados en el directorio de runtime/sessions

Más información sobre el controlador solo necesita configurar el handler correspondiente.
Por ejemplo, configure el controlador Redis :


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

Middleware de mensajería websocket


  • Middleware global

Configurado en app/bean.php :


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

  • Actuando sobre el controlador

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

TCP Solicitar Middleware


  • Middleware global

Configurado en app/bean.php :


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

  • Actuando sobre el controlador

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

Actualizar registro


Consejos de actualización:
  • Swoole\WebSocket\Server::push El cuarto parámetro $finish se cambió a int type después de swoole 4.4.12 .
  • El parámetro de evento TcpServerEvent::CONNECT del servidor tcp sigue siendo el mismo que recibir y cerrar. $fd, $server posiciones de intercambio del $fd, $server .


Github


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


Fijo :


  • Al corregir la inyección de configuración, si no se encuentra el valor, el valor predeterminado del tipo correspondiente se utilizará para anular el atributo, lo que hará que se sobrescriba el valor predeterminado del atributo d84d50a7
  • Se corrigió al usar la programación de mensajes en el servidor ws, no se filtraron datos vacíos, lo que resultó en una respuesta más. Evite el método swoft-cloud / swoft # 1002 [d84d50a7] ( https://github.com/swoft-cloud/swoft-component/ Pull / 522 / commits / d84d50a76c4c7ff19dc0896868745cfe8f0d93c9)
  • Se corrigió al usar la programación de mensajes en el servidor tcp, no se filtraron datos vacíos, lo que resultó en una respuesta más. 07a01ba1
  • Se corrigieron las dependencias faltantes de la biblioteca swoft / stdlib cuando se usa el componente de consola independientemente c569c81a
  • ArrayHelper::get fijo ArrayHelper::get Cuando la clave de entrada es entera, el parámetro del parámetro es incorrecto a44dcad
  • Se corrigió el procesamiento de la consola usando la tabla, al calcular el valor int, calcular el ancho del error de tipo de informe 74a835ab

  • Se corrigió el error en el usuario del componente que no puede personalizar el nivel de manejo de errores predeterminado 4c78aeb
  • Fijar Habilitar y deshabilitar la configuración de componentes isEnable() no funciona da8c51e56
  • Correcciones El uso del método uniqid() en el entorno cygwin debe establecer el segundo parámetro en verdadero c7f688f
  • Solucionado No se puede establecer el título del proceso en el entorno cygwin y causar el error c466f6a
  • Solucionado No se pueden eliminar los datos de cookies del navegador usando la response->delCookie() 8eb9241
  • Se reparó el envío de mensajes del servidor ws, los datos ext recibidos no son necesariamente una matriz que causa un error ff45b35
  • Fijar archivo de registro dividido por tiempo c195413
  • Solucione el problema pequeño del formato JSON registro a3fc6b9
  • Se getList llamada getList proveedor de servicios rpc dos veces fd03e71
  • Fix redis cluster no admite el parámetro de auth 7a678f
  • Arreglar el tipo de consulta de modelo json , no es compatible con la array 6023a9
  • Se reparó la operación multi redis no conectada a tiempo e5f698
  • Fix redis no admite expireAt , geoRadius 749241
  • Se corrigió el problema de desviación de detección de marca de tiempo de crontab eb08a46

Actualización (Actualización) :


  • La consola de actualización también emite un evento antes de ConsoleEvent::SHOW_HELP_BEFORE mensaje de ayuda ConsoleEvent::SHOW_HELP_BEFORE d3f7bc3
  • Simplifique y unifique la lógica de comando de administración del servidor http, ws, tcp, rpc f202c826
  • Actualice las clases de conexión ws y tcp para agregar los métodos newFromArray y toArray para facilitar la exportación de información y la restauración de conexiones a través de almacenamiento de terceros ( redis ) [a8b0b7c] ( https://github.com/swoft-cloud/swoft -component / pull / 528 / commits / a8b0b7c77d56d4392eba75d13a911816b9dc0cee)
  • Optimice el servidor para agregar un controlador de eventos de mensajes de tubería unificada, use el evento swowt en ws, tcp para manejar los mensajes entre procesos 1c51a8c

Mejora


  • Ahora, las solicitudes de TCP admiten agregar middleware de método global o correspondiente, y el proceso y el uso son similares a los de middleware http. Útil solo cuando se usa la programación del sistema 6b593877
  • Ahora, la solicitud de mensaje websocket admite agregar middleware de método global o correspondiente, y el proceso y el uso son similares a los de middleware http. Útil solo cuando se usa la programación del sistema 9739815
  • La gestión de eventos permite configurar destroyAfterFire para limpiar los datos transportados en el evento después de cada envío de eventos 50bf43d3
  • El code agregado de excepción de error de la base de datos devuelve fd306f4
  • Operación de archivo de rutina writeFile Nueva excepción de error de escritura 08c4244
  • RPC nueva verificación de parámetros 8646fc5

Github


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

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


All Articles