The imi coroutine development framework is a PHP coroutine development framework based on Swoole. It supports the service development of mainstream protocols such as Http, Http2, WebSocket, TCP, UDP, and MQTT. It is especially suitable for Internet microservices, instant messaging, IM, Internet of Things and other scenarios. ! .
Core components:
HttpApi, WebSocket, TCP, UDP, MQTT server
MySQL connection pool (master-slave + load balancing)
Redis connection pool (master-slave + load balancing)
Super easy-to-use ORM (Db, Redis, Tree)
Millisecond hot update
AOP
Bean container
Cache
Configuration reading and writing (Config)
Enumeration
Event
Facade
Validate
Lock
Log
Asynchronous tasks (Task)
Environmental requirements:
Redis、MySQL
imi coroutine development framework update log:
v2.0.11
Enhance
Hot update supports reloading configuration files
Added Server::getConnections(), Server::getConnectionCount()(#203)
Supports dynamically writing data into the model, but does not support toArray() and serialization
SQL monitoring supports catching exceptions
Workerman environment startup supports outputting network information
with() associates preloading attributes
This version implements the model associated query with feature, which can reduce the number of queries and improve the performance of associated queries.
Support setting with=true in associated annotations to enable automatic preloading
Support setting withFields={"Specify serialized fields"} in association annotations
Support calling the with() method after Model::query() to specify the preloaded associated attribute name
Supports calling the with() method after Model::query() to specify the callback corresponding to the preloaded associated attribute name.
Support calling withField() after Model::query() to specify the queried model and fields during serialization
Model::queryRelationsList() supports preloaded queries
optimization
Improve development experience (#197)
Optimize file scanning performance under Swoole
Compatible with scenarios where Swoole short name is turned off
Optimize AppContexts::APP_PATH to be treated as an absolute path
Optimize the fault tolerance of exceptions thrown by json errors
Unit testing improvements (#202)
Reconstruct HTTP routing to improve performance (#200)
Optimize the prompt when the ArrayList type does not correspond
When generating a model, set the getter method of the json type field to a reference return to facilitate data modification.
Optimize some code
repair
Fix the problem that @app.overrideDefaultIgnoreNamespace and @app.overrideDefaultIgnorePaths configurations do not take effect
Fixed the problem that initUri() will be triggered when Request executes setUri()
Fix the problem of converting permission components into tree shape (#201)
Fixed the issue where SessionId is treated as a normal Session when it is an empty string
Fix empty SessionJson parsing failure
Fix SwooleRedisServerUtil
Fix WorkermanUDP cannot get packetData from request context
Fixed the problem that the specified fields parameters of ManyToMany, PolymorphicToMany and PolymorphicManyToMany annotations are invalid.