面向生产环境的 PHP 异步网络通信引擎—SWOOLE

2022-10-11 21:14:22 119 0
魁首哥

一. ” Swoole 为什么比较难学习”

swoole的作用

二. 并发与并行 Concurrency & Parallelism

并发(concurrency),⼜称共行性,是指能处理多个同时性活动

的能力,并发事件之间不一定要同一时刻发生。

并行(parallelism),是指同时发生的两个并发事件,具有并发的

含义,⽽并发则不一定并行。

并发与并行

看图说话

三. 今天⼀共完成了5项工作,是并发还是并行?思考

并发和并行图示

四. 同步与异步 Synchronize & Asynchronous

• 同步:发送⽅发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

• 异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯⽅式。

• 关注完成任务时的消息通知方式

五. 阻塞与非阻塞 Block & Unblock

• 阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回

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

同步阻塞I/O

最常用的一个模型是同步阻塞 I/O 模型。在这个模型中,⽤户空间的应用程序执行⼀个系统调用,这会导致应用程序阻塞。这意味着应用程序会一直阻塞,直到系统调用完成为止(数据传输完成或发生错误)。调⽤应⽤程序处于一种不再消费 CPU 而只是简单等待响应的状态,因此从处理的角度来看,这是⾮常有效的。

同步阻塞I/O

同步非阻塞I/O

⾮阻塞的实现是 I/O 命令可能并不会立即满足,需要应用程序调用许多次来等待操作完成。这可能效率不高,因为在很多情况下,当内核执⾏这个命令时,应用程序必须要进行忙碌等待,直到数据可用为止,或者试图执行其他工作。正如下图所示的一样,这个⽅法可以引入 I/O 操作的延时,因为数据在内核中变为可用到用户调用read返回数据之间存在一定的间隔,这会导致整体数据吞吐量的降低。

同步非阻塞I/O

异步阻塞I/O

异步阻塞I/O

异步非阻塞I/O

异步非阻塞I/O

六. Nginx 多进程

• 进程模型

• 进程控制

• 进程通讯

• Daemon守护进程

NGINX多进程

NGINX多进程

七. NGINX+PHP

通⽤网关接口CGI Common Gateway Interface

命令⾏界面CLI Command Line Interface

快速通⽤⽹关接口 Fast CGI Fast Common Gateway Interface

PHP-FPM PHP Fast Common Gateway Interface Process Manager

Nginx PHP-FPM MySQL

调用过程

八. APACHE +PHP

“最早的服务器端程序一般都是 Accept 一个客户端连接就创建⼀个进程,然后子进程进入循环同步阻塞地与客户端连接进行交互,收发处理数据。”

多进程/多线程同步阻塞

多进程

OSI模型 与TCP模型

OSI模型与TCP模型

传输过程

3次连接,4次断开

3次连接,4次断开

九. Swoole多进程架构

SWOOLE

Swoole TCP Server

Swoole TCP Server

十. Swoole与传统框架的结合

Lumen+Swoole “先启动Swoole 后启动应用框架”

十一. 远程过程调用 Remote Procedure Call

远程过程调用

收藏
分享
海报
0 条评论
119
上一篇:除Python外,PHP也能做爬虫?PHP定时爬取代理IP 下一篇:互联网+PHP编程语言怎么成就高薪梦

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码