千家信息网

PHP7中五种I/O模型以及同步、异步、阻塞和非阻塞的说明

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"PHP7中五种I/O模型以及同步、异步、阻塞和非阻塞的说明",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP7中五种I/O模型以及同步
千家信息网最后更新 2026年11月01日PHP7中五种I/O模型以及同步、异步、阻塞和非阻塞的说明

本篇内容主要讲解"PHP7中五种I/O模型以及同步、异步、阻塞和非阻塞的说明",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP7中五种I/O模型以及同步、异步、阻塞和非阻塞的说明"吧!

1.同步:我客户端(C端调用者)一个功能,该功能没有结束前,我死等结果。
2.异步:我(c端调用者)调用一个功能,不知道该功能结果,该功能有结果后通知我,即回调通知

3.阻塞:就是调用我(s端被调用者,函数),我(s端被调用者,函数)没有完全接受完数据或者没有得到结果之前,我不会返回。

4.非阻塞:就是调用我(s端被调用者,函数),我(s端被调用者,函数)立即返回,得出结果后通知调用者

五种I/O模型

(1) 阻塞I/O (Blocking I/O)

当用户进程进行系统调用时,内核就开始了I/O的第一个阶段,准备数据到缓冲区中,当数据都准备完成后,则将数据从内核缓冲区中拷贝到用户进程的内存中,这时用户进程才解除block的状态重新运行。

(2) 非阻塞I/O (Non-Blocking I/O)

用户进程只有在第二个阶段被阻塞了,而第一个阶段没有阻塞,但是在第一个阶段中,用户进程不需要盲等,不停的去轮询内核,看数据是否准备好了,因此该模型是比较消耗CPU的。

(3) I/O复用(I/O Multiplexing)

I/O执行的两个阶段都是用户进程都是阻塞的,但是两个阶段是独立的,在一次完整的I/O操作中,该用户进程是发起了两次系统调用。和阻塞I/O不同的是第一段可以等待多个描述符就绪

(4) 信号驱动的I/O (Signal Driven I/O)

只有在I/O执行的第二阶段阻塞了用户进程,而在第一阶段是没有阻塞的。该模型在I/O执行的第一阶段,当数据准备完成之后,会主动的通知用户进程数据已经准备完成,即对用户进程做一个回调。该通知分为两种,一为水平触发,即如果用户进程不响应则会一直发送通知,二为边缘触发,即只通知一次。

(5) 异步I/O (Asynchrnous I/O)

当用户进程发起系统调用后,立刻就可以开始去做其它的事情,然后直到I/O执行的两个阶段都完成之后,内核会给用户进程发送通知,告诉用户进程操作已经完成了。

I/O多路复用技术

select

(1).select()的机制中提供一fd_set的数据结构,每一个元素都能与一打开的文件句柄(不管是Socket句柄,还是其他 文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成, 当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪一Socket或文件可读或可写。主要用于Socket通信当中。

(2).程序执行select后,如果没有数据输入,程序会一直等待(阻塞时),直到有数据为止,也就是程序中无需循环和sleep。

(3).每次调用select,都需要把fd_set集合从用户态拷贝到内核态,这个开销在fd_set很多时会很大

(4).同时每次调用select都需要在内核遍历传递进来的所有fd_set,这个开销在fd_set很多时也很大

(5).select支持的文件描述符数量太小了,默认是1024

poll

(1).poll的实现和select非常相似,只是描述fd_set集合的方式不同,poll使用pollfd链表结构而不是select的fd_set结构,其他的都差不多。

(2).监视描述符个数无上限;

epoll/kqueue

(1).监视描述符个数无上限;

(2).效率提升,不是轮询的方式,不会随着fd数目的增加效率下降。只有活跃可用的fd才会调用callback函数;即epoll/kqueue最大的优点就在于它只管你"活跃"的连接,而跟连接总数无关,因此在实际的网络环境中,epoll/kqueue的效率就会远远高于select和poll。

(3).内存拷贝,利用mmap()文件映射内存加速与内核空间的消息传递;

到此,相信大家对"PHP7中五种I/O模型以及同步、异步、阻塞和非阻塞的说明"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阻塞 用户 进程 数据 阶段 内核 用者 模型 函数 功能 文件 结果 准备 同步 程序 两个 内存 内容 句柄 只有 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云信互联网科技有限公司 科技平台互联网 科技和互联网公司 互联网科技与金融科技 期待互联网科技 广州紫鲸互联网科技 金融科技和互联网金融 现代科技和互联网有关系吗 西藏七维空间互联网科技有限公司 恒银科技与互联网金融 互联网金融科技公司干啥的 洛阳昕诺飞互联网科技有限公司 米聚互联网科技南京有限公司排面 乌鲁木齐新华智原互联网科技学校 广州新华互联网科技学校电竞方面 玉溪新华互联网科技好不好 众安科技工业互联网合作 工业互联网科技成果转化 广东鹅鹅鹅互联网科技有限公司 艺电能源互联网科技有限公司招聘 互联网金融科技 互联网中国科技 万易互联网科技 天津摩尔互联网科技 长亮科技互联网金融 天速互联网络科技有限公司 玉溪互联网科技怎么选 深圳市罗太互联网科技有限公司 互联网科技公司营业执照怎么办理 平安好医生打造互联网科技医疗
0