背景
在使用yii2做网站开发时,是鉴于它上手速度快,拥有强大的组件和丰富的类库。以前做过些android系统层、APP、流媒体等,而在接触yii2后发现,这个的开发速度确实快,虽然是个做网站的php框架,没有可比性,不过看了很多博客对比过yii2、laravel、phalcon,yii2的开发速度比后几个能提升几个等级。(话说以后有时间体验下后面两个,看是不是真的~)
废话不多说,进入正题。做网站开发时,发现有很多后端功能需要一直在运行,起初是使用的crontab定时执行,后来功能越来越多crontab已经不能满足需求。比如网站的一些发送短信、邮件等功能,都需要curl经过网络通信的,网络不好、高并发时不异步处理会阻塞进程,所以考虑引入些开源的异步多线程服务swoole。
目的
引入swoole的目的是只用它创建一个server异步服务器,对数据库等功能性操作使用原来的yii2框架。以下主要从swoole定时器、tcp的异步多线程通信做简单介绍。
swoole介绍
swoole是目前比较新的一个php异步处理框架,由国内人员开发,”新“->就会导致它前期版本有很多bug,不过现在提供的几个版本已经很稳定了。话说刚开始接触yii2做网站时,连个socket通信都没~感觉怪怪的,接触swoole后发现,终于找回了些以前做c/c++的感觉。(哦~原来你在这里!)
借用官网的定义swoole重新定义了PHP,它是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
想了解更多api的话,请点击这里。
Yii2中swoole使用
server端
由于swoole服务端只能运行在cli模式下(有兴趣的可以了解下PHP的运行模式cli命令行运行和FastCGI常驻型CGI,后者就是我们常说的fpm),而yii2的console支持控制台命令,这样就可以通过脚本启动swoole的server,和一个yii2的console应用将两者结合起来。