当前位置: 首页 > 工具软件 > Swoole > 使用案例 >

Swoole学习

汝开畅
2023-12-01

swoole应用案例-远观
IM聊天:http://im.classba.com.cn/main.php
战旗TV:http://www.zhanqi.tv
虎牙直播:http://www.huya.com
YY语音:http://www.yy.com

swoole应用到那里?-粗探望
互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网。

swoole是什么?
异步、并行、高性能,纯C编写的PHP扩展。swoole做为一种网络通信框架,解决php缺失的功能:比如多线程、异步通信、持久连接等。

swoole能做什么?
异步多线程服务器及客服端。
异步MySQL、Redis、数据库连接池、任务队列。
http/websocket服务器/客服端。
异步文件读写。
swoole2.0支持协程。

进程、线程、协程
进程:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配的最小单位,是应用程序运行的载体,一个进程由一个或多个线程组成。
直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
线程:线程是程序执行的最小单位,是进程内部的一条执行序列,也叫做执行流,由CPU独立调度执行,同一进程下的各个线程之间共享程序的内存空间。
协程:协程又称微线程,是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程,最重要的是,协程不是被操作系统内核所管理,而是由程序员在代码里调度。(也就是在用户态执行)。

简述同步与异步、阻塞与非阻塞概念
同步:
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。
例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事。

异步:
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
例如 ajax请求(异步): 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕。

阻塞:
阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。
有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回,它还会抢占cpu去执行其他逻辑,也会主动检测io是否准备好。

非阻塞:
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

再简单点理解就是:
同步,就是我调用一个功能,该功能没有结束前,我死等结果。
异步,就是我调用一个功能,不需要知道该功能结果,该功能有结果后通知我(回调通知)。
阻塞,就是调用我(函数),我(函数)没有接收完数据或者没有得到结果之前,我不会返回。
非阻塞,就是调用我(函数),我(函数)立即返回,通过select通知调用者。

同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞。
阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回。

Http,Https,websocket,TCP,UDP
HTTP(HyperText Transfer Protocol) 超文本传输协议。明文方式发送内容,不提供数据加密。

HTTPS(Hypertext Transfer Protocol Secure)超文本传输安全协议。在http的基础上加入了ssl协议,依靠证书来验证服务器身份,并为浏览器和服务器之间通信加密。

websocket 是HTML5 中的协议,实现与客户端与服务器双向,基于消息的文本或二进制数据通信。

TCP(Transmission Control Protocol)传输控制协议(类似打电话)。面向连接、传输可靠(保证数据正确性)、有序(保证数据顺序)、传输大量数据(流模式)、速度慢、对系统资源的要求多,程序结构较复杂。

UDP(User Data Protocol)用户数据报协议(类似发短信)。面向非连接 、传输不可靠(可能丢包)、无序、传输少量数据(数据报模式)、速度快,对系统资源的要求少,程序结构较简单 。

 类似资料: