韩天峰力荐 Swoole入门到实战 | 学习问题汇总

韩天峰力荐 Swoole入门到实战 | 学习问题汇总



《Swoole从入门到实践》课程内容非常经典,得到了Swoole开源项目创始-韩天峰的大力推荐!



韩天峰力荐 Swoole入门到实战 | 学习问题汇总

01

韩天峰力荐 Swoole入门到实战 | 学习问题汇总

对慕课网上线的

《Swoole从入门到实践》这门课,

Swoole创始人韩天峰这样评价道:“

许多PHP程序员在熟悉LAMP应用开发之后,开始尝试使用Swoole进行长生命周期、异步非阻塞、Socket网络通信、高性能高并发的编程开发。



目前Swoole的入门教程非常匮乏,学习者需要付出大量时间精力阅读Swoole的文档。《Swoole从入门到实践》的出现弥补了空缺,该教程内容从一个又一个的实例开始讲解,再到项目实践,内容由浅入深,非常适合Swoole的初学者学习,可帮助PHP程序员快速掌握Swoole,并在工作中得到应用和实践 ”。

同时

《Swoole从入门到实践》的讲师Singwa也很认真负责,收集了用户学习过程中遇到的一些问题,进行了解答与汇总,借此

希望能帮助更多的PHPer!



韩天峰力荐 Swoole入门到实战 | 学习问题汇总

02

韩天峰力荐 Swoole入门到实战 | 学习问题汇总

1、swoole的应用场景大概有哪些呢,写API合适吗,框架的话用普通框架和swoole结合的还是像easyswoole等哪个好呢?

Singwa答:

swoole写API合适的,我部门就是用他来做API的, swoole可以应用于很多场景,比如互联网 游戏 直播 聊天室等。框架的话可以和其他框架结合 比如 tp  yii  等,还可以用开源的框架easyswoole swoft 这两个是基于swoole开发的框架。

2、请问我登录客户端向服务器发送tcp请求,服务器为什么接受到线程id全都是0?





韩天峰力荐 Swoole入门到实战 | 学习问题汇总

韩天峰力荐 Swoole入门到实战 | 学习问题汇总

Singwa答:

  • 先看看您的cpu核数是多少?

  • 是否设置了线程数 reactor_num , 如果没设置默认就是你cpu的核数 ,那么如果你cpu为1核 那每次你的线程ID就是0了。 

  • 设置下reactor_num 为 4测试下  看看问题是否存在?



  • 备注: 

    reactor_num必须小于或等于worker_num。如果设置的reactor_num大于worker_num,那么swoole会自动调整使reactor_num等于worker_num

    3、为什么不建议在工作中使用连表查询?



    Singwa答:

    最近在swoole课程群里面有小伙伴在咨询有关连表查询的一些事情,其实连表查询在实际工作中,特别是中型以上的公司基本不建议用连表查询的 原因我汇总如下:



  • 你要做连表查询的话,后续不太好维护

  • 当数据大的时候连表查询很影响性能,除非万不得已的时候才用连表

  • 场景:

    比如你要查询文章的信息,并且是分页列表展示,然后文章里面还有其他的内容比如栏目等,但是文章表里面的栏目肯定存的是栏目表的主键ID, 但是在平台中展示文章列表的时候肯定是需要展示栏目的名称的,那这个时候很多工程师基本是使用关联连表查询比比如 left join等的。但是实际上不建议这样来做。 作法如下:



  • 取出文章的内容(比如第一页的时候 展示 20条内容) ,放到一个数组里面;

  • 并且把这数据中栏目id放到 另外一个数组里面 需要去重处理, 然后在拿到这些id  去栏目表里面 in查询下,1条sql。不是多个sql

  • 查询后组织下栏目的数据 id=>name的关系

  • 在列表展示的时候 循环文章的数组、展示栏目的时候就可以拿到3中的对应关系对上。



  • 4、如何在方法内部获取swoole_xx_server?



    1) 在onRequest 回掉中,将server写入超全局变了$_POST[‘SWOOLE_HTTP_SERVER’]=$this->SWOOLE_HTTP_SERVERtp_server;



    2) 在类方法中使用                    

    $_POST[‘SWOOLE_HTTP_SERVER’]->task($data);

     



    5、当有多个不同的task异步任务,而只有一个onTask回掉方法,如何处理不同异步任务?



    1)方法中调用task时,附加上是哪一个task的标示,如方法名

    2)在onTask回掉中,执行指定标示的task方法

    以上是《Swoole从入门到实践》的学习问题汇总,会持续更新。如果你有PHP经验

    ,但缺乏Swoole场景使用的小伙伴,欢迎学习这门教程,

    细致完整的学习线路,会让你快速上手

    Swoole!



    该课程不仅有这些内容↓

    安装篇:源码安装Swoole、源码安装PHP7、让PHP支持Swoole

    基础篇:网络通信引擎、Tcp服务/客户端、websocket服务器

    进阶篇:异步MySQL场景、处理异步实时日志、高性能消息队列、异步任务task、进程、内存、协程

    更有实战项目—打造高性能赛事直播平台 ↓

    韩天峰力荐 Swoole入门到实战 | 学习问题汇总

    教程学习地址

    点击下方图片或阅读原文,即可查看

    Swoole入门到实战

     】



    韩天峰力荐 Swoole入门到实战 | 学习问题汇总

    韩天峰力荐 Swoole入门到实战 | 学习问题汇总



    慕课网公众号

    程序员的梦工厂

    韩天峰力荐 Swoole入门到实战 | 学习问题汇总

    长按二维码关注