我们都知道Swoole 是一个 PHP 协程框架,为 PHP 提供协程、高性能网络编程支持,并提供了多种通信协议的网络服务器和客户端模块,可以方便快速地实现 TCP/UDP 服务、高性能 Web、WebSocket 服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。所以在php面试中,少不了关于swoole协程相关的内容。今天就给大家整理一些相关内容,希望对大家有所帮助。
Swoole 协程的原理
-
Swoole4 由于是单线程多进程的,同一时间同一个进程只会有一个协程在运行。
-
Swoole server 接收数据在 worker 进程触发 onReceive 回调,产生一个协
程。Swoole 为每个请求创建对应协程。协程中也能创建子协程。
-
协程在底层实现上是单线程的,因此同一时间只有一个协程在工作,协程的执行是串行的。
-
因此多任务多协程执行时,一个协程正在运行时,其他协程会停止工作。当前协程执行阻塞 IO 操作时会挂起,底层调度器会进入事件循环。当有 IO 完成事件时,底层调度器恢复事件对应的协程的执行。。所以协程不存在 IO 耗时,非常适合高并发 IO 场景。
Swoole 的协程执行流程
-
协程没有 IO 等待 正常执行 PHP 代码,不会产生执行流程切换
-
协程遇到 IO 等待 立即将控制权切,待 IO 完成后,重新将执行流切回原来协程切出的点
-
协程并行协程依次执行,同上一个逻辑
-
协程嵌套执行流程由外向内逐层进入,直到发生 IO,然后切到外层协程,父协程不会等待子协程结束
以上就是“这几个swoole协程知识点,让你秒通面试(swoole协程使用场景)”的详细内容,想要了解更多swoole相关内容欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/9048/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料