摘要:
原文首发链接:Swoole 源码分析之 Channel 通道模块 大家好,我是码农先森。 引言 通道,用于协程间通讯,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。 通道与 PHP 的 Array 类似,仅占用内存,没有其他额外的资源申请,所有操作均为内存操作,无 IO 消耗。 底 阅读全文
摘要:
首发原文链接:Swoole 源码分析之 Coroutine 协程模块 大家好,我是码农先森。 引言 协程又称轻量级线程,但与线程不同的是;协程是用户级线程,不需要操作系统参与。由用户显式控制,可以在需要的时候挂起、或恢复执行。 通过协程程序可以在执行的过程中保存当前的状态,并在恢复后从该状态处继续执 阅读全文
摘要:
首发原文链接:Swoole 源码分析之 WebSocket 模块 大家好,我是码农先森。 Swoole 源码分析之 WebSocket 模块 引言 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输。 与传统的 HTTP 请求-响应模型不同 阅读全文
摘要:
首发原文链接:Swoole 源码分析之 Http Server 模块 大家好,我是码农先森。 引言 在传统的IO模型中,每个IO操作都需要创建一个单独的线程或进程来处理,这样的操作会导致系统资源的大量消耗和管理开销。 而IO多路复用技术通过使用少量的线程或进程同时监视多个IO事件,能够更高效地处理大 阅读全文
摘要:
首发原文链接:Swoole 源码分析之 Http Server 模块 Swoole 源码分析之 Http Server 模块 Http 模块的注册初始化 这次我们分析的就是 Swoole 官网的这段代码,看似简单,实则不简单。 在 Swoole 源码文件 swoole_http_server.c 中 阅读全文
摘要:
首发原文链接:深入理解 Swoole 的底层加载原理 PHP 扩展加载 我们从 php-src/sapi/cli/php_cli.c:1159 文件的入口函数 int main(int argc, char *argv[]) 开始分析。 大家可以先看下面这张图,描述了整个关键函数的加载、调用流程。从 阅读全文
摘要:
首发原文链接:迟来的2023年终总结 大家好,我是码农先森。 成长 首先,上半年因公司项目规划的原因,研究了抖音数据的采集。基于这个缘故,对爬虫技术进行了一个深度学习。 学习的资料主要是来源这个网站 https://cuiqingcai.com/ 作者是:崔庆才。 同时配有可以练手的习题 https 阅读全文
摘要:
首发原文链接:https://mp.weixin.qq.com/s/KxgxseLEz84wxUPjzSUd3w 大家好,我是码农先森。 今天我们来分析 TCP Server 模块 的实现原理,下面这张图是来自 Swoole 的官网。 那么,我们就主要分析这段言简意赅的代码,从这段代码中可以看出设置 阅读全文
摘要:
## 前言 各种编程语言百花齐放、百家争鸣,但是 “万变不离其中”。对于网络通信而言,每一种编程语言的实现方式都不一样;但其实,调用的底层逻辑都是一样的。linux 系统底层向上提供了统一的 Socket 通信系统函数,动态链接库 `/lib64/libc.so` 中就是实现网络通信的关键类库。下面 阅读全文
摘要:
## 引言 俗话说:"工欲善其事,必先利其器"。作为一门程序员,我们在工作中,经常需要调试某一片段的代码,但是又不想打开繁重的 IDE (代码编辑器)。使用在线工具调试代码有时有苦于网速太渣,运行结果迟迟出不来。在这种情况下,我们就需要一个离线版的代码调试神奇了,所以我今天就介绍一款 PHP 代码调 阅读全文