研究了一晚上webman。內心有幾個疑問:
1.webman是異步http框架還是同步?
2.第三方的庫,比如github上微信的諸多sdk,可以隨意使用么?
3.如果我想使用第三方的數據庫模型,比如yii2的ActiveRecord,可以隨意集成么?需要注意什么?
4.用webman開發(fā),和在php-fpm模式下開發(fā),兩者寫代碼的方式有什么不同?需要注意什么?
5.問題有點多,我自己也不太好意思了,希望大神能不吝賜教,非常感激
1、同步
2、大部分第三方庫可以直接用,如果第三方庫使用了 php-fpm 特有的特性,比如設置 header cookie session 以及一些和http協(xié)議相關的函數時 無法直接使用,可能需要一些改造,目前看這種庫并不多。微信sdk可以參考 http://wtbis.cn/doc/webman#/components/wechat
3、如果 yii2 的ActiveRecord 有獨立的composer庫,可以直接集成。注意的點就是使用mysql單例,節(jié)省資源。使用單例的時候注意mysql服務端會關閉長時間不通訊的mysql連接導致程序報錯。laravel db和 thinkphp db都帶自動重連,不知道yii的ActiveRecord是否帶重連。如果不帶就加一個定時器,每隔一段時間(比如55秒)執(zhí)行 "select 1" ,保持mysql連接活躍避免被關閉。
4、用webman開發(fā),和在php-fpm模式下開發(fā)基本上一樣,寫代碼基本沒差別。
關于內存泄漏問題,一般只要注意類的靜態(tài)成員是數組的情況,注意不要無限向這個靜態(tài)成員添加數組就行,也就是不要讓它無限膨脹,該刪的時候刪除。另外框架支持php-fpm類似max-request配置,可以設置請求多少次之后回收進程,如果真的發(fā)生內存泄漏,有個兜底方案。
謝謝大佬,非常感謝。之前一直想讓yii2運行在workerman下面,主要是習慣了yii2的開發(fā)。以及利用自己的舊代碼可以很方便的給客戶做開發(fā)。試了幾個別人的東西,感覺有點復雜,對yii2源碼入侵太大。另外也不習慣異步編程的東西。昨晚又回來看workerman,突然發(fā)現這個webman,讀完文檔,感覺簡潔好用。接下來,我試試能不能把yii2的ActiveRecord整合進來。
真心佩服您啥都會。