前言
对swoole的理解
swoole的应用
swoole初体验
上一节课,说到了环境安装,安装了swoole。那么,我们可以通过命令php -m | grep swoole来查看安装的swoole扩展是否成功;通过命令php --ri swoole来查看swoole扩展的具体信息。对于一些安装swoole扩展之后,查看不到swoole时,主要是php-fpm没有重启的原因,重启一下php即可。
woole官网:https://www .swoole.com/
swoole文档:https://wiki.swoole.com/
开源中国源码:https://gitee.com/swoole/swoole/tree/master/
那什么是swoole呢?
Swoole是一个为PHP用C和C++编写的基于事件的高性能异步&协程并行网络通信引擎
那swoole能做什么呢?为什么swoole会这么火?火在哪里呢?
那么我们来拆分理解swoole:
1.swoole是php的一个扩展,是有C/C++来编辑的
2.swoole是基于 事件的 高性能 异步&协程并行 的 网络通讯引擎
php的扩展有很多,在windows下都是以.dll结尾的扩展文件,linux下都是以.so结尾的扩展文件
那么网络通讯引擎又是什么呢?
通常我们传统的web项目开发,我们都是通过ip地址或者域名来访问服务器,服务器就会解析并响应返回一些数据。那么这种都是人来控制电脑,通过浏览器来访问实现的。那么这种架构思想我们称为b/s架构。都是静态页面。
特点:用户访问浏览器,只会响应一次,通讯只有一次
我们还有一种通讯方式是c/s架构,客户端与服务端。程序电脑中运用广泛。
互动=》软件=》QQ 微信
特点:交互频率高,保持连接,保持通信
那么这两种都是网络通信。
网络通信就是程序之间,人与程序之间的通信,b/s,c/s 通信的架构
b/s =》通常是 短连接 =》短连接:一次请求一次结果
c/s =》有长连接,也有 短连接 =》 长连接:可以一直保持通信连接
那高性能又是什么呢?
最直接的体现就是 响应快;还有一个是 资源消耗
那事件又是什么呢?
事件 =》 前端js事件为例:某个动作发生的前和后
swoole的事件又会以怎样的方式去开发编辑呢?
回调函数 ,正常的是以闭包的方式去写我们的事件
那异步又是什么呢?
ajax知识异步的实现。
异步:最少是两个进程,不一定是并行的。
场景:秒杀 =》 异步队列
swoole会开辟多个进程完成一些我们需要的操作
关于协程,在后面会说的。
网络就是程序之间的数据交流的连接,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个鼓励的设备进行连接,通过信息交换实现人与人,人与计算 机,计算机u计算机兼职的通信,网络通信最终要的就是网络通信协议。
swoole是网络通信引擎,可以再b/s,c/s架构上去运行,至于怎么去做,就另外说了。
传统的web框架配合swoole做到高性能,例如:laravel,tp6,yii;要求是基于ioc的方式。
1.swoole加速php =》ioc类型的框架
2.基于c/s架构,客户端/服务端(主要)
那什么是客户端和服务端呢?
首先它们是相对而言的,服务和客户不是固定的。
服务主要是提供与服务这一方面: 就是能够帮助我们做一件某个事情, 比如 xxx恋爱秘籍 -》 就教我们恋爱技巧
而客户呢就是我们自己 去看这本秘籍 , 因为秘籍中提供了这些 恋爱 技巧的服务。
后来你的成为恋爱大师,要去教别人 那么这个时候你成为了 服务方, 他人就是客户
在这个过程中
谈swoole能做什么不如谈c/s的应用。本质就是c/s的应用。
例如:及时聊天,及时通信
根据官方手册来copy
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new Swoole\Server("127.0.0.1", 9501);
//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) {
echo "Client: Connect.\n";
});
//监听数据接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, "Server: ".$data);
});
//监听连接关闭事件
$serv->on('Close', function ($serv, $fd) {
echo "Client: Close.\n";
});
//启动服务器
$serv->start();
对于连接服务来说主要是三大块的内容, 1;创建连接对象,2:server监听事件,3:启动