Le framework de développement de coroutines imi est un framework de développement de coroutines PHP basé sur Swoole. Il prend en charge le développement de services de protocoles courants tels que Http, Http2, WebSocket, TCP, UDP et MQTT. Il est particulièrement adapté aux microservices Internet, à la messagerie instantanée et à la messagerie instantanée. , Internet des objets et autres scénarios ! .
Composants de base :
HttpApi, WebSocket, TCP, UDP, serveur MQTT
Pool de connexion MySQL (maître-esclave + équilibrage de charge)
Pool de connexion Redis (maître-esclave + équilibrage de charge)
ORM super facile à utiliser (Db, Redis, Tree)
Mise à jour à chaud en milliseconde
AOP
Conteneur à haricots
Cache
Lecture et écriture de configuration (Config)
Énumération
Événement
Façade
Valider
Verrouillage
Enregistrer
Tâches asynchrones (Tâche)
Exigences environnementales :
Redis、MySQL
Journal de mise à jour du cadre de développement de coroutine imi :
v2.0.11
Améliorer
La mise à jour à chaud prend en charge le rechargement des fichiers de configuration
Ajout de Server::getConnections(), Server::getConnectionCount()(#203)
Prend en charge l'écriture dynamique des données dans le modèle, mais ne prend pas en charge toArray() et la sérialisation
La surveillance SQL prend en charge la détection des exceptions
Le démarrage de l'environnement Workerman prend en charge la sortie des informations réseau
with() associe les attributs de préchargement
Cette version implémente le modèle de requête associée avec une fonctionnalité, qui peut réduire le nombre de requêtes et améliorer les performances des requêtes associées.
Prise en charge du paramètre with=true dans les annotations associées pour activer le préchargement automatique
Prise en charge du paramètre withFields={"Spécifier les champs sérialisés"} dans les annotations d'association
Prise en charge de l'appel de la méthode with() après Model::query() pour spécifier le nom d'attribut associé préchargé
Prend en charge l'appel de la méthode with() après Model::query() pour spécifier le rappel correspondant au nom d'attribut associé préchargé.
Prise en charge de l'appel de withField() après Model::query() pour spécifier le modèle et les champs interrogés lors de la sérialisation
Model::queryRelationsList() prend en charge les requêtes préchargées
optimisation
Améliorer l'expérience de développement (#197)
Optimiser les performances d'analyse des fichiers sous Swoole
Compatible avec les scénarios dans lesquels le nom court Swoole est désactivé
Optimiser AppContexts :: APP_PATH pour qu'il soit traité comme un chemin absolu
Optimiser la tolérance aux pannes des exceptions générées par les erreurs json
Améliorations des tests unitaires (#202)
Reconstruire le routage HTTP pour améliorer les performances (#200)
Optimiser l'invite lorsque le type ArrayList ne correspond pas
Lors de la génération d'un modèle, définissez la méthode getter du champ de type json sur un retour de référence pour faciliter la modification des données.
Optimiser du code
réparation
Résoudre le problème selon lequel les configurations @app.overrideDefaultIgnoreNamespace et @app.overrideDefaultIgnorePaths ne prennent pas effet
Correction du problème selon lequel initUri() serait déclenché lorsque Request exécute setUri()
Résoudre le problème de conversion des composants d'autorisation en forme d'arborescence (#201)
Correction du problème où SessionId est traité comme une session normale lorsqu'il s'agit d'une chaîne vide
Correction d'un échec d'analyse SessionJson vide
Réparer SwooleRedisServerUtil
Réparer WorkermanUDP ne peut pas obtenir packetData à partir du contexte de la demande
Correction du problème selon lequel les paramètres de champs spécifiés des annotations ManyToMany, PolymorphicToMany et PolymorphicManyToMany ne sont pas valides.