swoole

什么是swoole

swoole是PHP的異步条舔、并行枫耳、高性能網(wǎng)絡(luò)通信引擎,使用純C語言編寫孟抗,提供了PHP語言的異步多線程服務(wù)器迁杨,異步TCP/UDP網(wǎng)絡(luò)客戶端,異步MySQL凄硼,異步Redis铅协,數(shù)據(jù)庫(kù)連接池,AsyncTask摊沉,消息隊(duì)列狐史,毫秒定時(shí)器,異步文件讀寫坯钦,異步DNS查詢预皇。 Swoole內(nèi)置了Http/WebSocket服務(wù)器端/客戶端、Http2.0服務(wù)器端婉刀。

Swoole可以廣泛應(yīng)用于互聯(lián)網(wǎng)吟温、移動(dòng)通信、企業(yè)軟件突颊、云計(jì)算鲁豪、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(IOT)律秃、車聯(lián)網(wǎng)爬橡、智能家居等領(lǐng)域。 使用PHP+Swoole作為網(wǎng)絡(luò)通信框架棒动,可以使企業(yè)IT研發(fā)團(tuán)隊(duì)的效率大大提升糙申,更加專注于開發(fā)創(chuàng)新產(chǎn)品。隨著我們

我們?yōu)槭裁从胹woole

用戶打開了我們的網(wǎng)站船惨。他要做的就是勾選需要發(fā)郵件的代理商列表柜裸,然后把結(jié)算郵件發(fā)出去。

假如我們需要發(fā)1封郵件粱锐,我們寫個(gè)函數(shù)執(zhí)行即可疙挺。考慮到網(wǎng)絡(luò)可能會(huì)稍微有點(diǎn)延遲怜浅,但是是可以接受的铐然,用戶會(huì)乖乖等你的網(wǎng)頁發(fā)完郵件了再關(guān)閉網(wǎng)頁蔬崩。

假如我們要發(fā)布10封郵件,用一個(gè)for循環(huán)搀暑,循環(huán)10遍執(zhí)行發(fā)郵件操作沥阳。這時(shí)候,也許10倍的網(wǎng)絡(luò)延遲會(huì)讓用戶稍微有點(diǎn)不耐煩自点,但勉強(qiáng)可以等吧沪袭。

假如要發(fā)100封郵件,for循環(huán)100遍樟氢,用戶直接揭竿而起冈绊,什么破網(wǎng)站!

但實(shí)際上埠啃,我們很可能有超過1萬的郵件死宣。怎么處理這個(gè)延遲的問題?

答案就是用異步碴开。把“發(fā)郵件”這個(gè)操作封裝毅该,然后后臺(tái)異步地執(zhí)行1萬遍。這樣的話潦牛,用戶提交網(wǎng)頁后眶掌,他所等待的時(shí)間只是“把發(fā)郵件任務(wù)請(qǐng)求推送進(jìn)隊(duì)列里”的時(shí)間。而我們的后臺(tái)服務(wù)將在用戶看不見的地方跑巴碗。而swoole就為我們實(shí)現(xiàn)了異步隊(duì)列處理及并發(fā)等問題朴爬。

如何使用

1、安裝swoole

有兩種安裝方式橡淆,一種是先下載安裝包召噩,傳到服務(wù)器(記住一定是linux服務(wù)器)上,然后解壓逸爵,然后先cd到服務(wù)器的安裝包的位置具滴,然后執(zhí)行

phpize./configuremakesudomakeinstall

系統(tǒng)就會(huì)自動(dòng)安裝,如果提示phpize不存在的話师倔,就需要安裝一下phpize.

另一種方式直接執(zhí)行

peclinstallswoole

用這種方式可以自動(dòng)下載安裝构韵。

我采取的是第二種方式噢。

安裝完成趋艘,需要更改php.ini的配置疲恢,將

extension=swoole.so

放在這個(gè)配置中,然后重啟nginx致稀。

完成以后執(zhí)行

php -m

查看是否有swoole冈闭。有swoole說明安裝成功俱尼。

2.啟動(dòng)server

之前看文檔我一直以為swoole是個(gè)框架抖单,需要我們配置然后設(shè)置端口訪問,其實(shí)不是,swoole是php的擴(kuò)展矛绘,我們只需要在我們的項(xiàng)目中增加server.php,或者其他的名字耍休,里面的代碼簡(jiǎn)單點(diǎn)可以按照文檔上來寫,如下:

//創(chuàng)建Server對(duì)象货矮,監(jiān)聽 127.0.0.1:9501端口$serv =newswoole_server("127.0.0.1",9501);//監(jiān)聽連接進(jìn)入事件$serv->on('connect',function($serv, $fd){echo"Client: Connect.\n";});//監(jiān)聽數(shù)據(jù)發(fā)送事件$serv->on('receive',function($serv, $fd, $from_id, $data){? ? $serv->send($fd,"Server: ".$data);});//監(jiān)聽連接關(guān)閉事件$serv->on('close',function($serv, $fd){echo"Client: Close.\n";});//啟動(dòng)服務(wù)器$serv->start();

這里就創(chuàng)建了一個(gè)TCP服務(wù)器羊精,監(jiān)聽本機(jī)9501端口,你也可以改成其他的端口號(hào)囚玫,只要你的服務(wù)器可以支持這個(gè)端口喧锦。

服務(wù)器端的server必須運(yùn)行起來我們才能使用swoole,異步執(zhí)行抓督。如何運(yùn)行呢燃少?我們cd到你的項(xiàng)目下server.php 所在的文件夾,然后執(zhí)行

phpserver.php

如何測(cè)試成功呢铃在?我們可以關(guān)掉這個(gè)客戶端阵具,重新打開連接服務(wù)器,然后執(zhí)行

telnet127.0.0.19501helloServer:hello

如果是這樣子說明成功了定铜。

需要注意的是我們?nèi)绻薷牧藄erver.php,必須斷掉之前阳液,然后重新打開。

我這邊寫了一個(gè)腳本來斷掉之前的揣炕,起名stop.sh

#! /bin/bashps -eaf |grep"server.php"| grep -v"grep"| awk'{print $2}'|xargskill-9

這需要放在和server.php同一個(gè)文件夾帘皿。

我們需要cd到這個(gè)文件夾,執(zhí)行sh stop.sh

3畸陡、client

這個(gè)是可以在瀏覽器上執(zhí)行的矮烹,我們見一個(gè)client.php,代碼如下:

$client =newswoole_client(SWOOLE_SOCK_TCP);//連接到服務(wù)器if(!$client->connect('127.0.0.1',9501,0.5)){die("connect failed.");}//向服務(wù)器發(fā)送數(shù)據(jù)if(!$client->send("hello world")){die("send failed.");}//從服務(wù)器接收數(shù)據(jù)$data = $client->recv();if(!$data){die("recv failed.");}echo$data;//關(guān)閉連接$client->close();

創(chuàng)建一個(gè)TCP的同步客戶端罩锐,此客戶端可以用于連接到我們server服務(wù)器奉狈。向服務(wù)器端發(fā)送一個(gè)hello world字符串,服務(wù)器會(huì)返回一個(gè) Server: hello world字符串涩惑。

以上是swoole簡(jiǎn)單的安裝和連同仁期。

yii2集成swoole

有需要的朋友可以去yii2-swoole這個(gè)地址下載,yii2集成swoole的代碼竭恬。

參考資料:

關(guān)于異步任務(wù)隊(duì)列

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跛蛋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痊硕,更是在濱河造成了極大的恐慌赊级,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岔绸,死亡現(xiàn)場(chǎng)離奇詭異理逊,居然都是意外死亡橡伞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門晋被,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兑徘,“玉大人,你說我怎么就攤上這事羡洛」夷裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵欲侮,是天一觀的道長(zhǎng)崭闲。 經(jīng)常有香客問我,道長(zhǎng)威蕉,這世上最難降的妖魔是什么镀脂? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮忘伞,結(jié)果婚禮上薄翅,老公的妹妹穿的比我還像新娘。我一直安慰自己氓奈,他們只是感情好翘魄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舀奶,像睡著了一般暑竟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上育勺,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天但荤,我揣著相機(jī)與錄音,去河邊找鬼涧至。 笑死腹躁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的南蓬。 我是一名探鬼主播纺非,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼赘方!你這毒婦竟也來了烧颖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤窄陡,失蹤者是張志新(化名)和其女友劉穎炕淮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跳夭,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涂圆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年们镜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乘综。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖套硼,靈堂內(nèi)的尸體忽然破棺而出卡辰,到底是詐尸還是另有隱情,我是刑警寧澤邪意,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布九妈,位于F島的核電站,受9級(jí)特大地震影響雾鬼,放射性物質(zhì)發(fā)生泄漏萌朱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一策菜、第九天 我趴在偏房一處隱蔽的房頂上張望晶疼。 院中可真熱鬧,春花似錦又憨、人聲如沸翠霍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寒匙。三九已至,卻和暖如春躏将,著一層夾襖步出監(jiān)牢的瞬間锄弱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工祸憋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留会宪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓蚯窥,卻偏偏與公主長(zhǎng)得像狈谊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沟沙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理河劝,服務(wù)發(fā)現(xiàn),斷路器矛紫,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 前文再續(xù)赎瞎,就書接上一回,隨著與Server颊咬、TCP务甥、Protocol的邂逅牡辽,Swoole終于迎來了自己的故事,今天...
    蝸牛淋雨閱讀 1,735評(píng)論 1 14
  • 本文示例代碼詳見:https://github.com/52fhy/swoole_demo敞临。 簡(jiǎn)介 Swoole是...
    jiancaigege閱讀 799評(píng)論 1 6
  • 前言 上一回講到态辛,Swoole終于成功邂逅了PHP,現(xiàn)在要開始它們的奇妙路程了挺尿。 Server之初 通常奏黑,我們會(huì)把...
    零一間閱讀 2,873評(píng)論 0 12
  • 感恩銀行卡審批下來 感恩媽媽給我和寶貝買了美味的蘋果和梨 感恩媽媽能千里迢迢過來幫我照顧寶貝并且把我照顧的也棒棒噠...
    Angel小仙女閱讀 167評(píng)論 0 0