研究了一晚上webman。内心有几个疑问: 1.webman是异步http框架还是同步? 2.第三方的库,比如github上微信的诸多sdk,可以随意使用么? 3.如果我想使用第三方的数据库模型,比如yii2的ActiveRecord,可以随意集成么?需要注意什么? 4.用webman开发,和在php-fpm模式下开发,两者写代码的方式有什么不同?需要注意什么? 5.问题有点多,我自己也不太好意思了,希望大神能不吝赐教,非常感激
刚刚又想到一个问题。webman开发的时候,可不可以定义一个基类比如base_controller,然后让所有的controller都继承它。
可以
1、同步 2、大部分第三方库可以直接用,如果第三方库使用了 php-fpm 特有的特性,比如设置 header cookie session 以及一些和http协议相关的函数时 无法直接使用,可能需要一些改造,目前看这种库并不多。微信sdk可以参考 https://www.workerman.net/doc/webman#/components/wechat 3、如果 yii2 的ActiveRecord 有独立的composer库,可以直接集成。注意的点就是使用mysql单例,节省资源。使用单例的时候注意mysql服务端会关闭长时间不通讯的mysql连接导致程序报错。laravel db和 thinkphp db都带自动重连,不知道yii的ActiveRecord是否带重连。如果不带就加一个定时器,每隔一段时间(比如55秒)执行 "select 1" ,保持mysql连接活跃避免被关闭。 4、用webman开发,和在php-fpm模式下开发基本上一样,写代码基本没差别。
关于内存泄漏问题,一般只要注意类的静态成员是数组的情况,注意不要无限向这个静态成员添加数组就行,也就是不要让它无限膨胀,该删的时候删除。另外框架支持php-fpm类似max-request配置,可以设置请求多少次之后回收进程,如果真的发生内存泄漏,有个兜底方案。
谢谢大佬,非常感谢。之前一直想让yii2运行在workerman下面,主要是习惯了yii2的开发。以及利用自己的旧代码可以很方便的给客户做开发。试了几个别人的东西,感觉有点复杂,对yii2源码入侵太大。另外也不习惯异步编程的东西。昨晚又回来看workerman,突然发现这个webman,读完文档,感觉简洁好用。接下来,我试试能不能把yii2的ActiveRecord整合进来。 真心佩服您啥都会。
刚刚又想到一个问题。webman开发的时候,可不可以定义一个基类比如base_controller,然后让所有的controller都继承它。
可以
1、同步
2、大部分第三方库可以直接用,如果第三方库使用了 php-fpm 特有的特性,比如设置 header cookie session 以及一些和http协议相关的函数时 无法直接使用,可能需要一些改造,目前看这种库并不多。微信sdk可以参考 https://www.workerman.net/doc/webman#/components/wechat
3、如果 yii2 的ActiveRecord 有独立的composer库,可以直接集成。注意的点就是使用mysql单例,节省资源。使用单例的时候注意mysql服务端会关闭长时间不通讯的mysql连接导致程序报错。laravel db和 thinkphp db都带自动重连,不知道yii的ActiveRecord是否带重连。如果不带就加一个定时器,每隔一段时间(比如55秒)执行 "select 1" ,保持mysql连接活跃避免被关闭。
4、用webman开发,和在php-fpm模式下开发基本上一样,写代码基本没差别。
关于内存泄漏问题,一般只要注意类的静态成员是数组的情况,注意不要无限向这个静态成员添加数组就行,也就是不要让它无限膨胀,该删的时候删除。另外框架支持php-fpm类似max-request配置,可以设置请求多少次之后回收进程,如果真的发生内存泄漏,有个兜底方案。
谢谢大佬,非常感谢。之前一直想让yii2运行在workerman下面,主要是习惯了yii2的开发。以及利用自己的旧代码可以很方便的给客户做开发。试了几个别人的东西,感觉有点复杂,对yii2源码入侵太大。另外也不习惯异步编程的东西。昨晚又回来看workerman,突然发现这个webman,读完文档,感觉简洁好用。接下来,我试试能不能把yii2的ActiveRecord整合进来。
真心佩服您啥都会。