...夠,難以應(yīng)對(duì)實(shí)際項(xiàng)目中的問題。例如我想要知道在卸載sw(下文簡(jiǎn)稱sw)后需不需要手動(dòng)清理caches,搜索引擎是沒有什么好答案的。這篇文章結(jié)合淘寶首頁(yè)P(yáng)WA的經(jīng)驗(yàn),分享出我認(rèn)為非常有價(jià)值的關(guān)于Service Worker的知識(shí)點(diǎn)。 先從...
前言 經(jīng)過 php_swoole_server_before_start 調(diào)用 swReactorThread_create 創(chuàng)建了 serv->reactor_threads 對(duì)象后,swServer_start 調(diào)用 swReactorThread_start 創(chuàng)建了 reactor 多線程。線程在建立之時(shí),就會(huì)調(diào)用 swReactorThread_loop 函數(shù)開啟 reactor 事件循環(huán)...
swPort_onRead_check_eof EOF 自動(dòng)分包 我們前面說過,swPort_onRead_raw 是最簡(jiǎn)單的向 worker 進(jìn)程發(fā)送數(shù)據(jù)包的方法,swoole 會(huì)將從客戶端接受到的數(shù)據(jù)包,立刻發(fā)送給 worker 進(jìn)程,用戶自己把數(shù)據(jù)包拼接起來(lái) 如果啟用了 EOF 自動(dòng)分包,那...
swManager_start 創(chuàng)建進(jìn)程流程 task_worker 進(jìn)程的創(chuàng)建可以分為三個(gè)步驟:swServer_create_task_worker 申請(qǐng)所需的內(nèi)存、swTaskWorker_init 初始化各個(gè)屬性、swProcessPool_start 創(chuàng)建進(jìn)程 int swManager_start(swFactory *factory) { swFactoryProcess *...
Server 的啟動(dòng) 在 server 啟動(dòng)之前,swoole 首先要調(diào)用 php_swoole_register_callback 將 PHP 的回調(diào)函數(shù)注冊(cè)到 server 的對(duì)象函數(shù)中去 之后調(diào)用 php_swoole_server_before_start 創(chuàng)建 swReactorThread 數(shù)組對(duì)象、workers 進(jìn)程池對(duì)象 最后調(diào)用 swServer_start 函...
...選項(xiàng) 構(gòu)造 server 對(duì)象 構(gòu)造 server 對(duì)象最重要的是兩件事:swServer_init 初始化 server、為 server 添加端口: PHP_METHOD(swoole_server, __construct) { zend_size_t host_len = 0; char *serv_host; long sock_type = SW_SOCK...
前言 swoole_client 提供了 tcp/udp socket 的客戶端的封裝代碼,使用時(shí)僅需 new swoole_client 即可。 swoole 的 socket client 對(duì)比 PHP 提供的 stream 族函數(shù)有哪些好處: stream 函數(shù)存在超時(shí)設(shè)置的陷阱和 Bug,一旦沒處理好會(huì)導(dǎo)致 Server 端長(zhǎng)...
...。而其中的關(guān)鍵點(diǎn),其實(shí)就是離線使用的功能,也就是 sw 在其中的作用。由于 sw 可以攔截 client 的請(qǐng)求,也就是能夠根據(jù)請(qǐng)求,把請(qǐng)求后的 response 用瀏覽器緩存 caches 緩存下來(lái),以實(shí)現(xiàn)離線的使用 三. 生命周期 說到 sw 的生命周...
swManager_loop 函數(shù) manager 進(jìn)程管理 manager 進(jìn)程開啟的時(shí)候,首先要調(diào)用 onManagerStart 回調(diào) 添加信號(hào)處理函數(shù) swSignal_add,SIGTERM 用于結(jié)束 server,只需要 running 設(shè)置為 0,manager 會(huì)逐個(gè)殺死 worker 進(jìn)程;SIGUSR1 用于重載所有的 worker ...
...ctor 模式一直是眾多網(wǎng)絡(luò)框架的首要選擇,本節(jié)主要講解 swoole 中的 reactor 模塊。 UNP 學(xué)習(xí)筆記——IO 復(fù)用 Reactor 的數(shù)據(jù)結(jié)構(gòu) Reactor 的數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜,首先 object 是具體 Reactor 對(duì)象的首地址,ptr 是擁有 Reactor 對(duì)象的類的指針...
...行開發(fā),來(lái)為 tcp 層進(jìn)行 SSL 隧道加密 OpenSSL 初始化 在 swoole 中,如果想要進(jìn)行 ssl 加密,只需要如下設(shè)置即可: $serv = new swoole_server(0.0.0.0, 443, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); $key_dir = dirname(dirname(__DIR__))....
...程序來(lái)說,保證數(shù)據(jù)正確的同步與更新離不開鎖和信號(hào),swoole 中的鎖與信號(hào)基本采用 pthread 系列函數(shù)實(shí)現(xiàn)。UNIX 中的鎖類型有很多種:互斥鎖、自旋鎖、文件鎖、讀寫鎖、原子鎖,本節(jié)就會(huì)講解 swoole 中各種鎖的定義與使用。 APU...
前言 swoole 的 timer 模塊功能有三個(gè):用戶定時(shí)任務(wù)、剔除空閑連接、更新 server 時(shí)間。timer 模塊的底層有兩種,一種是基于 alarm 信號(hào),一種是基于 timefd。 timer 數(shù)據(jù)結(jié)構(gòu) timer 數(shù)據(jù)結(jié)構(gòu)是 swTimer。其中 heap 是多個(gè) swTimer_node 類型...
...,過程和服務(wù)端類似,此處不需要多說。 static PHP_METHOD(swoole_client, recv) { zend_long buf_len = SW_PHP_CLIENT_BUFFER_SIZE; zend_long flags = 0; int ret; char *buf = NULL; if (zend_parse_parame...
ChatGPT和Sora等AI大模型應(yīng)用,將AI大模型和算力需求的熱度不斷帶上新的臺(tái)階。哪里可以獲得...
一、活動(dòng)亮點(diǎn):全球31個(gè)節(jié)點(diǎn)覆蓋 + 線路升級(jí),跨境業(yè)務(wù)福音!爆款云主機(jī)0.5折起:香港、海外多節(jié)點(diǎn)...
大模型的訓(xùn)練用4090是不合適的,但推理(inference/serving)用4090不能說合適,...