imi 介紹

imi 是基於 PHP 協程應用開發框架,它支持 HttpApi、WebSocket、TCP、UDP 應用開發。git
由 Swoole 提供強力驅動,Swoole 擁有常駐內存、協程非阻塞 IO 等特性。github
框架遵照 PSR 標準規範,提供 AOP、註解、鏈接池、請求上下文管理、ORM模型等經常使用組件。segmentfault
imi 的模型支持關聯關係的定義,增刪改查一把梭!緩存
與其餘專一微服務領域的 Swoole 框架不一樣,imi 專一單體應用開發。緣由很簡單:大部分公司都不須要上微服務,單體應用足矣。框架
imi 框架第一個版本 v0.0.1 首發於 2018年6月21日
更新內容
新增
- 增長單元測試(PHP7.1-7.四、nightly 所有經過),今後再也不擔憂修復一個 bug,產生更多 bug。這是一個長期任務,不斷充實測試用例,也歡迎你們來貢獻測試代碼!
- 新增 ImiUtilCoroutine::create(),與 imigo() 行爲一致
- 新增 ImiUtilHttpMessageUtil 類
- 新增框架優先級定義,常量類:ImiUtilImiPriority
修復
- 修復熱重啓問題:worker exit timeout, forced to terminate
- 修復 PDO Statement 沒法命中緩存問題
- 修復日誌重複寫入問題
- 修復 MySQL->query() 方法不記錄最後執行 SQL 語句問題
- 修復當設置task_enable_coroutine但不設置enable_coroutine時,task事件監聽參數錯誤問題
- 修復類型聲明
- 修復 RedisManager::getNewInstance() 沒法被 RedisManager::release() 釋放問題
- 修正 Redis 相關類型註釋
- 修復 withAddedHeader() 問題
- 修復使用 TAutoInject 時,有父類致使沒法正常注入的問題
- 修復Callback、CallableValue註解沒法注入屬性問題
- 修復配置值注入、常量注入註解,沒法注入到屬性問題
優化
- 優化 BeanProxy::getConfigInjects()
- 優化 ImiDbQueryResult
- 非 worker 進程投遞的 task,再也不自動 finish
- 同步池子 getResource() 再也不有可能返回 null,一概拋出異常
- ITaskHandler->handle() 支持返回值自動 finish
- 規範內部監聽 IMI.INITED 事件的優先級
- 優化 BeanProxy,如今不用等到回收週期,當即會被釋放
- 注入屬性值的註解類改成 ImiAopAnnotationBaseInjectValue
- 進程、進程池進程,強制開啓協程化
測試用例計劃及進度
- [x] Aop
- [x] Config
- [ ] Cache
- [x] Db
- [x] Enum
- [x] Event
- [x] Inject
- [x] Redis
- [x] HttpServer
- [x] HttpValidate
- [ ] WebSocketServer
- [ ] TCPServer
- [ ] UDPServer
- [x] Task
- [ ] Lock
- [ ] Log
- [ ] Model
- [ ] Process
- [ ] Utils

聯繫咱們
Github 反饋:https://github.com/Yurunsoft/...微服務
碼雲倉庫:https://gitee.com/yurunsoft/IMI單元測試
Segmentfault 提問:https://segmentfault.com/測試
開源中國 問答:https://www.oschina.net/question優化
QQ羣交流:17916227
spa