文档章节

Swoole入门(1)☞初识swoole

ali安东尼
 ali安东尼
发布于 2017/09/11 14:54
字数 947
阅读 4
收藏 0

###什么是swoole?

Swoole允许通过PHP构造一个新的Server,提供跟Apache类似的功能,监听请求,作出响应。

这个时候PHP不再是写Web业务逻辑的PHP了,它参与了Server的构建,成为一个Network Server,也不需要依赖与apache/nginx,因此访问该server是通过cli模式,不能再通过浏览器访问了。

###PHP和swoole到底是什么关系呢?

很多编码人都认为PHP语言大部分都用来做Web开发,更有人认为只能做Web;把PHP黑的可惨,此次我必须得替天行道,匡扶正义,还PHP一个清白!!

作为一个PHPer,我必须承认PHP很难实现如:网络通信编程、异步IO、异步文件读写,异步DNS查询等牛逼哄哄的功能,而这时候swoole诞生了,它是PHP的一个标准扩展;是一个基于网络通信和异步IO的引擎,有了它就能更加方便实现如上说的各种功能。

###使用案例

一开再质疑swoole的质量和广度,也不清楚到底学不学是好,万一辛苦学下了,发现没有人维护了,淘汰了,那才杯具呢,之后百度一通,发现虎牙直播、YY语音、战旗TV这些大户都在使用swoole,那我有何担心呢?

再看看swoole的社区,发觉社区论坛寥寥无几,毫无生气,版本迭代有点慢;又开始担心起来了,不过再仔细想想,学习swoole,可以学习网络协议、阻塞、IO复用、多进程、websocket、异步mysql/redis各种模糊的东西,足以足以。

###开发环境

系统环境:Ubuntu 16.04

开发环境:PHP7.0+Nginx+FPM

鄙人再安装swoole扩展的时候遇到个问题,phpinfo是有swoole信息了,但是每次实例化都显示无法识别swoole对象,找了很久发现是在配置php.ini添加swoole模块的时候需要对:/etc/php/7.0/cli/php.ini/etc/php/7.0/fpm/php.ini两个文件添加。

更简单的方法是使用pecl一键安装,毕竟swoole已经被官方PHP收录了。省了很多麻烦事情,命令如下:pecl install swoole

###swoole结构

在编码之前最好熟悉下swoole大体结构,不然编码下去也是一头雾水,云里雾里的:

Master主进程:

swoole启动后主线程,主进程由多个Reactor线程,基于epoll/kqueue进行网络事件轮询。

主进程负责监听server socket,当有请求过来时,Master会评估每个Reactor线程的连接数量。将此连接分配给连接数最少的reactor线程,再转发到worker进程进行处理。

Manager进程:

swoole启动后会创建一个单独的Manager进程,用来管理worker进程的生命周期并监视进程的异常和回收。

当Reactor线程通过管道传给Manager进程的时候,Manager进程会fork出一个Worker进程或者Task进程

同时当Worker/Task进程发生致命错误或者运行生命周期结束时,管理进程会回收此进程,并创建新的进程。

Worker进程:

Worker进程用来发送/接收数据,处理一些业务逻辑等任务。

Task进程:

Task进程目的是为了解决在业务代码中,有些逻辑部分不需要马上执行。利用task进程池,可以方便的投递一个异步任务去执行,在Worker进程空闲时再去捕获任务执行的结果。

###结语

各位对swoole有了大概的了解把,下一节就开始实现一个简单的实例!

由睿江云人员提供,想了解更多,请登陆www.eflycloud.com

© 著作权归作者所有

共有 人打赏支持
ali安东尼
粉丝 3
博文 192
码字总数 173101
作品 0
广州
私信 提问
swoole框架-swoft初体验

swoole框架-swoft初体验 没有swoole之前,php一直被"誉“为世界上最好的语言。swoole横空出世后,php就成了宇宙最好的语言了... 关于swoole的基础使用,详见 2018年swoole实战1-初识swoole ...

章鱼喵_
07/31
0
0
2018年swoole实战2-异步非阻塞投递任务

继上篇 2018年swoole实战1-初识swoole 项目中,总有一些场景会触发耗时比较长的行为。如:用户更新了文章,触发推送消息给此用户的所有粉丝,如果一个用户有10000个粉丝,用同步阻塞的方式来...

章鱼喵_
07/27
0
0
swoole tcp client/server-献给swoole初初初初初初学者们

环境 PHP5.6.17 Swoole 1.8.8-stable Ubuntu 14.04 (use_namespace 需要开启命名空间) 学前提要 Server 角色并不是一成不变的,当 Server 在请求数据时,实际上就是 Client,相对的 Client 在...

krasen
2016/08/29
129
2
swoole| swoole 协程初体验

date: 2018-5-30 14:31:38 title: swoole| swoole 协程初体验 description: 通过协程的执行初窥 swoole 中协程的调度; 理解协程为什么快; swoole 协程和 go 协程对比 折腾 swoole 协程有一段...

daydaygo
06/14
0
0
Swoole 分布式通讯框架--SwooleDistributed

SwooleDistributed 是swoole分布式系统的实现,他提供了一套基于swoole扩展的分布式通讯框架。 结构图: SwooleDistributed 不仅提供了分布式搭建的必要设施,还提供了4大组件帮助你提高编写...

白_猫
2016/07/25
6.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

追加字节能优化性能

这种方式看起来很神奇,单如果深入理解处理器架构就能理解其中的奥秘。让我们先来看看LinkedTransferQueue这个类,它使用一个内部类型来定义队列的头队列Head和尾节点tail,二这个内部类Pad...

无知的小狼
33分钟前
3
0
性能优化(JVM概念及配置)

虚拟机组成 一次编写,到处运行 Java虚拟机是对操作系统的模拟,隔离差异 2018编程语言排行榜 一个复杂的构架 虚拟机的内部概念 运行原理 编译器,解释器执行流程 内存分配-线程模型 栈帧模型...

这很耳东先生
39分钟前
3
0
Scala之初步认识与环境准备

1. 了解 Scala 1.1. 什么是 Scala Scala 是 Scalable Language 的简写,是一门多范式的编程语言。 Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚...

飞鱼说编程
今天
4
0
Vue项目分环境打包的实现步骤

在项目开发中,我们的项目一般分为开发版、测试版、Pre版、Prod版。Vue-cli的默认环境一只有dev和prod两个,之前每次要发布测试版或Pre版都是修改了源码中API地址后打包,这样很麻烦。如果能...

peakedness丶
今天
6
0
vue+lowdb+express

搭建流程: 1.安装Node.js; 2.安装npm; 3.安装Express; 搭建流程 npm install -g express 安装 express 生成器 npm install -g express-generator 查看是否安装成功,随便输的一个命令...

Js_Mei
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部