真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

swoole中onreceive不觸發(fā)怎么辦-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)swoole中onreceive不觸發(fā)怎么辦的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

“專業(yè)、務實、高效、創(chuàng)新、把客戶的事當成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 創(chuàng)新互聯(lián)建站是您可以信賴的網(wǎng)站建設服務商、專業(yè)的互聯(lián)網(wǎng)服務提供商! 專注于做網(wǎng)站、成都做網(wǎng)站、軟件開發(fā)、設計服務業(yè)務。我們始終堅持以客戶需求為導向,結(jié)合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!

onReceive


接收到數(shù)據(jù)時回調(diào)此函數(shù),發(fā)生在worker進程中。函數(shù)原型:

function onReceive(swoole_server $server, int $fd, int $reactor_id, string $data);

$server,Server對象

$fd,TCP客戶端連接的標識符

$reactor_id,TCP連接所在的Reactor線程ID

$data,收到的數(shù)據(jù)內(nèi)容,可能是文本或者二進制內(nèi)容

關(guān)于$fd和$reactor_id 詳細的解釋

未開啟自動協(xié)議選項,onReceive單次收到的數(shù)據(jù)較大為64K

開啟了自動協(xié)議處理選項,onReceive將收到完整的數(shù)據(jù)包,較大不超過 package_max_length

支持二進制格式,$data可能是二進制數(shù)據(jù)

使用底層提供的open_eof_check/open_length_check/open_http_protocol,可以保證數(shù)據(jù)包的完整性

不使用底層的協(xié)議處理,在onReceive后PHP代碼中自行對數(shù)據(jù)分析,合并/拆分數(shù)據(jù)包。

例如:代碼中可以增加一個 $buffer = array(),使用$fd作為key,來保存上下文數(shù)據(jù)。 每次收到數(shù)據(jù)進行字符串拼接,$buffer[$fd] .= $data,然后在判斷$buffer[$fd]字符串是否為一個完整的數(shù)據(jù)包。

默認情況下,同一個fd會被分配到同一個Worker中,所以數(shù)據(jù)可以拼接起來。使用dispatch_mode = 3時。

請求數(shù)據(jù)是搶占式的,同一個fd發(fā)來的數(shù)據(jù)可能會被分到不同的進程。所以無法使用上述的數(shù)據(jù)包拼接方法

關(guān)于粘包問題如SMTP協(xié)議,客戶端可能會同時發(fā)出2條指令。在Server中可能一次性收到,這時應用層需要自行拆包。SMTP是通過\r\n來分包的,所以業(yè)務代碼中需要 explode("\r\n", $data)來拆分數(shù)據(jù)包。

如果是請求應答式的服務,無需考慮拆分數(shù)據(jù)的問題。原因是客戶端在發(fā)起一次請求后,必須等到服務器端返回當前請求的響應數(shù)據(jù),才會發(fā)起第二次請求,不會同時發(fā)送2個請求

感謝各位的閱讀!關(guān)于“swoole中onreceive不觸發(fā)怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


名稱欄目:swoole中onreceive不觸發(fā)怎么辦-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/ighhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部