原创 Swoole 源碼分析——Client模塊之Recv

recv 接受數據 客戶端接受數據需要指定緩存區最大長度,就是下面的 buf_len,flags 用於指定是否設置 waitall 標誌,如果設定了 waitall 就必須設定準確的 size,否則會一直等待,直到接收的數據長度達到 si

原创 Swoole 源碼分析——Client模塊之Send

前言 上一章我們說了客戶端的連接 connect,對於同步客戶端來說,連接已經建立成功;但是對於異步客戶端來說,此時可能還在進行 DNS 的解析,onConnect 回調函數還未執行。 本節中,我們將繼續說明客戶端發送數據的流程,同

原创 Swoole 源碼分析——Client模塊之Connect

前言 swoole_client 提供了 tcp/udp socket 的客戶端的封裝代碼,使用時僅需 new swoole_client 即可。 swoole 的 socket client 對比 PHP 提供的 stream 族函數有哪

原创 Swoole 源碼分析——進程管理 Swoole_Process

前言 swoole-1.7.2 增加了一個進程管理模塊,用來替代 PHP 的 pcntl 擴展。 PHP自帶的pcntl,存在很多不足,如 pcntl 沒有提供進程間通信的功能 pcntl 不支持重定向標準輸入和輸出 pcntl 只

原创 Swoole 源碼分析——基礎模塊之 Pipe 管道

前言 管道是進程間通信 IPC 的最基礎的方式,管道有兩種類型:命名管道和匿名管道,匿名管道專門用於具有血緣關係的進程之間,完成數據傳遞,命名管道可以用於任何兩個進程之間。swoole 中的管道都是匿名管道。 在 swoole 中,有三種不

原创 Swoole 源碼分析——Async 異步事件系統 swoole_event

前言 對於異步的任務來說,Server 端的 master 進程與 worker 進程會自動將異步的事件添加到 reactor 的事件循環中去,task_worker 進程不允許存在異步任務。 對於異步的 Client 客戶端、swoole

原创 Swoole 源碼分析——Server模塊之OpenSSL(下)

前言 上一篇文章我們講了 OpenSSL 的原理,接下來,我們來說說如何利用 openssl 第三方庫進行開發,來爲 tcp 層進行 SSL 隧道加密 OpenSSL 初始化 在 swoole 中,如果想要進行 ssl 加密,只需要如下設

原创 Swoole 源碼分析——Server模塊之OpenSSL (上)

前言 自從 Let's Encrypt 上線之後,HTTPS 網站數量佔比越來越高,相信不久的未來就可以實現全網 HTTPS,大部分主流瀏覽器也對 HTTP 網頁給出明顯的 不安全 標誌。 SSL 是在 TCP 層之上爲客戶端服務端之間數據