Yii2的异步多线程服务之swoole

本文介绍了如何在Yii2框架中利用swoole实现异步多线程服务,包括swoole的背景、目的、定时器和异步服务器的使用。swoole作为PHP的异步网络通信引擎,使得Yii2能够处理高并发和耗时任务。文章详细讲解了server端和client端的实现,以及遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

背景


在使用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应用将两者结合起来。

Created with Raphaël 2.1.0 脚本执行php 创建yii的console应用和swoole_server swoole_server创建worker进程接受数据 通过console对象处理action
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值