01 - swoole的快速入门

woole官网:https://www.swoole.com/
swoole文档:https://wiki.swoole.com/
开源中国源码:https://gitee.com/swoole/swoole/tree/master/

1、swoole的理解

根据swoole的官方网站的介绍:swoole是一个为PHP用C和C++编写的基于事件的高性能异步&协程并行网络通信引擎

对于这句话,我们可以拆分为几个方面去理解swoole:

  1. swoole是用CC++去编写的一个php扩展;

我们在使用swoole的时候就可以像使用php其他扩展一样,通过安装和开启扩展后直接使用,

  1. swoole 是一个网络通信引擎

在这里,我们首先简单介绍下网络通信的2个架构:b/sc/s

b/s就是Brower/Server,浏览器/服务器模式,是Web兴起后的一种网络结构模式,即在浏览器请求,服务器响应的工作模式,是现在主流用的一种通信方式。
工作流程可以分为:
1、浏览器发送请求: 用户想访问一个网站,在浏览器上通过http/https向服务器发送请求,等待服务器响应;
2、服务器端处理请求: 服务器端接收并处理请求,应用服务器端通常使用服务器端技术,如JSP等,对请求进行数据处理,并产生响应;
3、服务器端发送响应: 服务器端把用户请求的数据(网页文件、图片、声音等等)返回给浏览器。
4、浏览器解释执行HTML文件,呈现用户界面。

c/s就是客户端/服务端模式,是web兴起之前的一种通信方式,也是现在比较流行的一种通信方式,跟b/s不同的是,跟服务端通信的客户端是指的是各类软件,而不单指浏览器,他在程序电脑中广泛引用,就如浏览器和window的通信,而它为什么会现在重新兴起是由于b/s这种架构有个特点,只能请求一次,服务端只会响应一次,是一种短连接,但是随着发展,由于跟着互动交互的需要,这种架构不能满足,而c/s它能保存连接,交互频率高,可以一种保持通信,是一种短连接或者长连接,从而重新兴起,比如qq,微信等。

总而言之,通过这两种架构的简单了解,我们可以知道网络就是程序之间的数据交流的连接,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个独立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信,网络通信最终要的就是网络通信协议。

而传统的php的web框架都是基于b/s开发的,swoole的出现就是为了让php也能基于c/s开发,提高效率,所以学习swoole其实就是学习网络编程

  1. 具有高性能

swoole由于底层是C和C++编写的,它有很高的性能,体现在消耗同样的资源,响应更快。比如并发1万个请求从MySQL读取海量数据仅需要0.2秒

  1. 基于事件的

某一个动作发生的时候就可以称之为事件,例子:前台js的鼠标点击事件,
swoole是基于事件并用闭包的方式去开发编程的。例如

//创建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";
});

这是创建一个tcp服务器,并用闭包的方式去编写客户端连接事件要触发的动作。

  1. 异步&协程

暂时可以理解为只是一种程序执行的模式。

2、swoole的应用

  1. swoole是一个网络通信引擎,可以传统的web框架结合使用,做到高性能,提升性能,进行加速,不过要与swoole结合使用,框架必须是以ioc容器为核心的,例如laravel,yii等。
  2. swoole的具体使用场景可以参照c/s架构来考虑,这也是为什么swoole会流行的本质原因,它广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

3、客户端和服务端的简单理解

客户端:可以理解为需要服务的人。
服务端:可以理解为提供服务的人。
客户端和服务端其实是一个相对的概念,在不通的场景,同个介质可以是客户端也可以是服务端。比如浏览器访问由php搭建的网站,这是由php搭建的网站是服务端,浏览器就是客户端,而访问需要数据,php需要通过pdo连接mysql获取数据,在这一过程中,php就作为客户端,mysql作为服务端。

你可能感兴趣的