開(kāi)啟協(xié)程時(shí)請(qǐng)?jiān)诰幾g時(shí)加入--enable-coroutine編譯選項(xiàng)。
協(xié)程可以理解為純用戶態(tài)的線程,其通過(guò)協(xié)作而不是搶占來(lái)進(jìn)行切換。相對(duì)于進(jìn)程或者線程,協(xié)程所有的操作都可以在用戶態(tài)完成,創(chuàng)建和切換的消耗更低。 (推薦學(xué)習(xí): swoole視頻教程)
Swoole可以為每一個(gè)請(qǐng)求創(chuàng)建對(duì)應(yīng)的協(xié)程,根據(jù)IO的狀態(tài)來(lái)合理的調(diào)度協(xié)程,這會(huì)帶來(lái)了以下優(yōu)勢(shì):
開(kāi)發(fā)者可以無(wú)感知的用同步的代碼編寫(xiě)方式達(dá)到異步IO的效果和性能,避免了傳統(tǒng)異步回調(diào)所帶來(lái)的離散的代碼邏輯和陷入多層回調(diào)中導(dǎo)致代碼無(wú)法維護(hù)。
同時(shí)由于swoole是在底層封裝了協(xié)程,所以對(duì)比傳統(tǒng)的php層協(xié)程框架,開(kāi)發(fā)者不需要使用yield關(guān)鍵詞來(lái)標(biāo)識(shí)一個(gè)協(xié)程IO操作,所以不再需要對(duì)yield的語(yǔ)義進(jìn)行深入理解以及對(duì)每一級(jí)的調(diào)用都修改為yield,這極大的提高了開(kāi)發(fā)效率。
協(xié)程API目前針對(duì)了TCP,UDP等主流協(xié)議client的封裝,包括:
UDP
TCP
HTTP
Mysql
Redis
可以滿足大部分開(kāi)發(fā)者的需求。對(duì)于私有協(xié)議,開(kāi)發(fā)者可以使用協(xié)程的TCP或者UDP接口去方便的封裝。
啟用
PHP版本要求:>= 5.5,包括5.5、5.6、7.0、7.1
基于swoole_server或者swoole_http_server進(jìn)行開(kāi)發(fā),目前只支持在onRequet, onReceive, onConnect等事件回調(diào)函數(shù)中使用協(xié)程。
swoole_server和swoole_http_server將為每一個(gè)請(qǐng)求創(chuàng)建對(duì)應(yīng)的協(xié)程,開(kāi)發(fā)者可以在onRequet、onReceive、onConnect 事件回調(diào)中使用協(xié)程客戶端。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。