IMI 正式發布!基於 Swoole 的協程 PHP 開發框架

2020-12-13 開源中國

介紹

IMI 是基於 Swoole 開發的協程 PHP 開發框架,擁有常駐內存、協程異步非阻塞IO等優點。

IMI 框架文檔豐富,上手容易,致力於讓開發者跟使用傳統 MVC 框架一樣順手。

IMI 框架底層開發使用了強類型,易維護,性能更強。支持 Aop ,支持使用註解和配置文件注入,完全遵守 PSR-3、4、7、11、15、16 標準規範。

框架的擴展性強,開發者可以根據實際需求,自行開發相關驅動進行擴展。不止於框架本身提供的功能和組件!

我們認為一個框架不僅需要代碼健壯、簡單易用,文檔也是十分重要,所以文檔的完善是我們工作的重點,相信一個好的文檔能夠讓你事半功倍!

歡迎有志之士加入我們,一起開發完善!技術好的貢獻代碼,文筆好的貢獻文檔,有好的想法也歡迎與我們交流!

框架暫未實戰驗證,請無能力閱讀和修改原始碼的開發者,暫時不要用於實際項目開發,等待我們的實戰檢驗完善,我們不希望因此為您造成不便!

官網:https://www.imiphp.com/
文檔手冊:https://doc.imiphp.com/

代碼倉庫:
碼云:https://gitee.com/yurunsoft/IMI
Github:https://github.com/Yurunsoft/IMI

空項目:https://gitee.com/yurunsoft/empty-imi-demo
功能Demo:https://gitee.com/yurunsoft/imi-demo

目前框架還未成熟,暫只支持php7.0+swoole2.2,未來將支持php7.1以上+swoole4.0!

框架目標及計劃

前期,計劃主要完善 HTTP 服務開發,優先實現:常駐內存,避免重複加載帶來的性能損耗,提升海量性能;協程異步,提高對 I/O 密集型場景並發處理能力(如:微信開發、支付、登錄等)。

待 HTTP 服務開發完善後,然後下一步會增加 TCP、UDP、WebSocket 開發支持,最後才是考慮分布式、微服務的解決方案。

功能組件

  •  Aop (註解 / 配置文件)

  •  Container (PSR-11)

  •  註解

  •  全局事件/類事件

  •  HttpServer

  •  HttpRequest/HttpResponse (PSR-7)

  •  Http 中間件、註解路由、配置文件路由 (PSR-15)

  •  Session (File + Redis)

  •  View (html + json + xml)

  •  日誌 (PSR-3 / File + Console)

  •  緩存 (PSR-16 / File + Redis)

  •  Redis 連接池

  •  協程 MySQL 連接池

  •  PDO 連接池

  •  協程 PostgreSQL 連接池

  •  Db 連貫操作

  •  關係型資料庫 模型 ORM

  •  跨進程共享內存表 模型 ORM

  •  Task 異步任務

  •  命令行開發輔助工具

  •  圖形化管理工具

  •  項目熱更新

  •  RPC 遠程調用

  •  WebSocket 伺服器相關……

  •  TCP 伺服器相關……

日誌、緩存都支持:多驅動 + 多實例 + 統一操作入口

所有連接池都支持:同步 + 異步 + 多驅動 + 多實例

文檔

完全開發手冊

運行環境

版權資訊

IMI 遵循 Apache2 開源協議發布,並提供免費使用。

鳴謝

感謝以下開源項目 (按字母順序排列) 為 IMI 提供強力支持!

項目起源

在機緣巧合下,我偶然接觸到了 Swoole 2.x 版本,在簡單了解和demo調試後我認為,Swoole 可能是未來 PHP 微服務架構開發必不可少的擴展。

眾所周知,PHP 是被其它語言看不起的宇宙第一程式語言,PHP 僅僅是一個腳本語言,僅僅是一個模版引擎,沒有強類型規範開發,維護非常不便。

PHP 7 來了,強類型的支持加入,增強了 PHP 的可維護性並提升了性能,IMI 底層就使用了非常多的強類型進行開發和規範。

宇潤我在 2013 年開發並發布了第一個框架 YurunPHP,一直維護使用至今,非常穩定,並且有文檔。

我待過的公司有用過這個框架,我還是很幸運的,有機會在實戰中不斷改進完善框架。

PHP 進入 Swoole 時代,我本著學習 Swoole 並且嘗試能否開發一個基於 Swoole 的框架的想法,接觸了解到了 EasySwoole 和 Swoft。

喜聞樂見的是,我先參考了一下這兩個框架的文檔和用法,再簡單看了一下原始碼。我決定還是先從 Swoole 看起,實戰是最可以鍛鍊人的。於是我走上了 IMI 開發的不歸路……

相關焦點