El marco de desarrollo de rutinas imi es un marco de desarrollo de rutinas PHP basado en Swoole. Admite el desarrollo de servicios de protocolos convencionales como Http, Http2, WebSocket, TCP, UDP y MQTT. Es especialmente adecuado para microservicios de Internet, mensajería instantánea y mensajería instantánea. , Internet de las Cosas y otros escenarios. .
Componentes principales:
Servidor HttpApi, WebSocket, TCP, UDP, MQTT
Grupo de conexiones MySQL (maestro-esclavo + equilibrio de carga)
Grupo de conexiones de Redis (maestro-esclavo + equilibrio de carga)
ORM súper fácil de usar (Db, Redis, Tree)
Actualización en caliente de milisegundos
POA
Contenedor de frijoles
Cache
Lectura y escritura de configuración (Config)
Enumeración
Evento
Fachada
Validar
Cerrar
Registro
Tareas asincrónicas (Tarea)
Requisitos medioambientales:
Redis、MySQL
Registro de actualización del marco de desarrollo de rutina imi:
v2.0.11
Mejorar
La actualización en caliente admite la recarga de archivos de configuración
Servidor agregado::getConnections(), Servidor::getConnectionCount()(#203)
Admite la escritura dinámica de datos en el modelo, pero no admite toArray() ni serialización.
La supervisión de SQL admite la captura de excepciones
El inicio del entorno Workerman admite la salida de información de red
with() asocia atributos de precarga
Esta versión implementa el modelo de consulta asociada con función, que puede reducir la cantidad de consultas y mejorar el rendimiento de las consultas asociadas.
Admite configuración con = verdadero en anotaciones asociadas para habilitar la precarga automática
Configuración de soporte conFields={"Especificar campos serializados"} en anotaciones de asociación
Admite llamar al método with() después de Model::query() para especificar el nombre del atributo asociado precargado
Admite llamar al método with() después de Model::query() para especificar la devolución de llamada correspondiente al nombre del atributo asociado precargado.
Admite llamadas a withField() después de Model::query() para especificar el modelo y los campos consultados durante la serialización.
Model::queryRelationsList() admite consultas precargadas
mejoramiento
Mejorar la experiencia de desarrollo (#197)
Optimice el rendimiento del escaneo de archivos en Swoole
Compatible con escenarios donde el nombre corto de Swoole está desactivado
Optimice AppContexts::APP_PATH para que se trate como una ruta absoluta
Optimice la tolerancia a fallas de las excepciones generadas por errores json
Mejoras en las pruebas unitarias (#202)
Reconstruir el enrutamiento HTTP para mejorar el rendimiento (#200)
Optimice el mensaje cuando el tipo ArrayList no corresponde
Al generar un modelo, establezca el método getter del campo de tipo json en un retorno de referencia para facilitar la modificación de datos.
Optimizar algún código
reparar
Solucione el problema de que las configuraciones @app.overrideDefaultIgnoreNamespace y @app.overrideDefaultIgnorePaths no surten efecto
Se solucionó el problema de que initUri() se activaría cuando Request ejecuta setUri()
Solucionar el problema de convertir componentes de permisos en forma de árbol (#201)
Se solucionó el problema por el cual SessionId se trata como una sesión normal cuando es una cadena vacía
Reparar el error de análisis de SessionJson vacío
Reparar SwooleRedisServerUtil
Fix WorkermanUDP no puede obtener paquetes de datos del contexto de solicitud
Se solucionó el problema de que los parámetros de los campos especificados de las anotaciones ManyToMany, PolymorphicToMany y PolymorphicManyToMany no son válidos.