mix-php / mix

☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、Swow、WorkerMan、FPM、CLI-Server
https://openmix.org/mix-php
Apache License 2.0
1.94k stars 212 forks source link

关注关注,顺便给个建议 #2

Closed krissss closed 6 years ago

krissss commented 6 years ago

class下的属性和方法建议注释采用规范的phpDoc形式,至少囊括 @var @param @return 这些吧,便于编辑器(像phpstorm)等提供代码提示的功能。 如果有需要,本人愿意提供开发帮忙,本人对 Yii2 框架非常熟悉,对 swoole 也有所使用,所以很看好该项目。

onanying commented 6 years ago

非常感谢,注释确实要规范一下,待我把全部需要的功能稳定下来会慢慢完善这些,后续如果项目使用的人很多,我忙不过来时,我会联系大家来一起开发的,谢谢。

gouchaoer commented 6 years ago

mysql/redis的io并发没问题么。。。一个worker进程同时处理n个请求,每个请求阻塞在io的时候同进程下的别的worker是得不到调度的,比php-fpm情况要糟,能在压测里加上mysql/redis的io逻辑么?

现在解决方案无非半协程/协程

onanying commented 6 years ago

这里你有几个认知错误,首先Swoole是多进程模型,一个worker同一时刻只会处理一个请求,然后是MixPHP的mysql/redis的连接是在每个worker进程内创建的,所以不同的请求之间并不会相互影响,MixPHP现在并没有使用协程,现阶段只想在同步方面做到更好。

krissss commented 6 years ago

同意暂时不使用协程,协程的开发方式会增加开发难度,虽然swoole官方有方案可以用同步的方式写协程,但是对于不懂的人来说协程方案从理解上就带来了很大的困难,前期没必要加上。

gouchaoer commented 6 years ago

等等。。。swoole1.x都异步框架了,tcp server同时可以保持百万连接,http server我看demo也是异步的啊,怎么可以一个worker进程只能同时处理一个request,而且zamphp/swooledistributed之类的基于1.x的半协程都是可以一个worker同时处理很多请求的

onanying commented 6 years ago

如果你说的代码里 on('request',function(){}); 这样的方式是异步的话,那是的,但是这与单个worker同时处理一个request并没有关联,swoole在worker内并没有使用多线程,这个我觉得你还是写代码去试试就知道了,还是要去实践。Reactor、Worker、Task的关系:https://wiki.swoole.com/wiki/page/163.html ,我只能帮你到这里了,加油。