laravel-swoole和websocket入門(一)

1邮丰,前言

  • swoole: PHP的協(xié)程高性能網(wǎng)絡(luò)通信引擎,使用完全同步的代碼實(shí)現(xiàn)異步程序卸察。PHP代碼無(wú)需額外增加任何關(guān)鍵詞,底層自動(dòng)進(jìn)行協(xié)程調(diào)度铅祸,實(shí)現(xiàn)異步IO坑质。
  • websocket:可以建立服務(wù)器與客戶端的雙向連接,用于實(shí)時(shí)通訊临梗,可替代AJax輪詢涡扼,節(jié)約服務(wù)器資源。
  • Laravel-swoole:laravel的一個(gè)擴(kuò)展盟庞,Laravel的一個(gè)請(qǐng)求需要加載很多文件吃沪,消耗IO。在swoole上運(yùn)行l(wèi)aravel什猖,第一次運(yùn)行時(shí)把所有PHP腳本文件都加載的內(nèi)存中票彪,然后每次請(qǐng)求都不用再讀取腳本文件,速度能提升多少不狮,大家可以想象一下降铸。

2,安裝

以下是主要特點(diǎn)swooletw/laravel-swoole:

  • 在swoole上運(yùn)行l(wèi)aravel
  • 出色的性能提升高達(dá)30倍
  • 支持在Laravel中運(yùn)行WebSocket服務(wù)器

通過composer安裝

$ composer require swooletw/laravel-swoole

安裝的時(shí)候請(qǐng)注意版本號(hào),如果php版本和服務(wù)器swoole的版本比較低摇零,可以安裝低版本的laravel-swoole

使用此擴(kuò)展要確保服務(wù)器已安裝PHP的Swoole擴(kuò)展推掸。Swoole擴(kuò)展快速安裝命令:

pecl install swoole

安裝完畢后,要的php.ini里添加extension=swoole.so驻仅,啟用擴(kuò)展

注冊(cè)服務(wù)提供者谅畅,添加到config/app.php的providers數(shù)組中,laravel5.5以上版本跳過此步驟

[
    'providers' => [
        SwooleTW\Http\LaravelServiceProvider::class,
    ],
]

3噪服,配置

如果使用默認(rèn)配置可以跳過此步驟

生成配置文件毡泻,運(yùn)行以下命令在/config命令看生成配置文件swoole_http.php并swoole_websocket.php

$ php artisan vendor:publish --tag=laravel-swoole

swoole_http.php(部分配置)

server.host 服務(wù)器監(jiān)聽主機(jī)地址(127.0.0.1)
server.port 服務(wù)器偵聽端口(要注意服務(wù)器是否開放端口)
public_path 項(xiàng)目的public文件夾路徑(base_path('public'))
handle_static_files 確定是否使用Swoole響應(yīng)靜態(tài)文件的請(qǐng)求。(您應(yīng)該使用Nginx來處理靜態(tài)文件粘优。false)
websocket.enabled 是否啟動(dòng)socket仇味,設(shè)為true才可使用websocket

swoole_websocket.php(部分配置)

handler 用于onOpen和onClose回調(diào)函數(shù)的Websocket處理程序
parser 默認(rèn)的websocket框架解析器
route_file Websocket路由文件路徑

4,在swoole上運(yùn)行項(xiàng)目

通過命令行啟動(dòng)swoole:http 服務(wù)

php artisan swoole:http start

看到以下信息表示運(yùn)行成功

Starting swoole http server...
Swoole http server started: <http://127.0.0.1:1215>
現(xiàn)在來測(cè)試下速度怎么樣

測(cè)試前的準(zhǔn)備

  • 安裝wrk測(cè)試工具
  • 把域名一正常解析到80端口
  • 把域名二也解析到80端口敬飒,在nginx中配置反向代理
location ~ {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:1215;
    }

開始測(cè)試了邪铲,先來測(cè)試域名一

wrk -t4 -c100 http://www.***.com
Running 10s test @ http://www.***.com
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.37s   486.14ms   1.91s    53.85%
    Req/Sec     8.56      9.03    38.00     88.24%
  61 requests in 10.11s, 488.94KB read
  Socket errors: connect 0, read 0, write 0, timeout 48
Requests/sec:      6.03
Transfer/sec:     48.36KB

平均每秒請(qǐng)求量6.03

再來試試域名二的,也就是運(yùn)行在swoole上的

wrk -t4 -c100 http://www.***.com
Running 10s test @ http://www.***.com
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   334.99ms   53.56ms 505.09ms   82.25%
    Req/Sec    87.50     69.07   240.00     66.67%
  2929 requests in 10.02s, 21.54MB read
Requests/sec:    292.37
Transfer/sec:      2.15MB

平均每秒請(qǐng)求量292无拗,速度提升將近50倍带到。這個(gè)差距也出乎我的意料,可能測(cè)試的頁(yè)面只是一個(gè)首頁(yè),沒有復(fù)雜的運(yùn)算和mysql限制才提升這么明顯揽惹。當(dāng)然實(shí)際應(yīng)用中影響速度的肯定不局限于IO被饿,還有mysql的效率,實(shí)際效果會(huì)低于測(cè)試數(shù)據(jù)搪搏,但10倍以上的提升應(yīng)該是沒有問題的狭握。

下一篇寫websocket在laravel-swoole下的運(yùn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疯溺,隨后出現(xiàn)的幾起案子论颅,更是在濱河造成了極大的恐慌育瓜,老刑警劉巖乙嘀,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異荚坞,居然都是意外死亡墨闲,警方通過查閱死者的電腦和手機(jī)今妄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸳碧,“玉大人盾鳞,你說我怎么就攤上這事≌袄耄” “怎么了腾仅?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)琐脏。 經(jīng)常有香客問我攒砖,道長(zhǎng),這世上最難降的妖魔是什么日裙? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮惰蜜,結(jié)果婚禮上昂拂,老公的妹妹穿的比我還像新娘。我一直安慰自己抛猖,他們只是感情好格侯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著财著,像睡著了一般联四。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撑教,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天朝墩,我揣著相機(jī)與錄音,去河邊找鬼伟姐。 笑死收苏,一個(gè)胖子當(dāng)著我的面吹牛亿卤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹿霸,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼排吴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了懦鼠?” 一聲冷哼從身側(cè)響起钻哩,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肛冶,沒想到半個(gè)月后憋槐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淑趾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年阳仔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扣泊。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡近范,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出延蟹,到底是詐尸還是另有隱情评矩,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布阱飘,位于F島的核電站斥杜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏沥匈。R本人自食惡果不足惜蔗喂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望高帖。 院中可真熱鬧缰儿,春花似錦、人聲如沸散址。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)预麸。三九已至瞪浸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吏祸,已是汗流浹背对蒲。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人齐蔽。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓两疚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親含滴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诱渤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 必備品文檔:DocumentationAPI: API Reference視頻:Laracasts速查表:Lara...
    daos閱讀 1,150評(píng)論 0 4
  • Swoole 是為 PHP 開發(fā)的生產(chǎn)級(jí)異步編程框架。 他是一個(gè)純 C 開發(fā)的擴(kuò)展谈况, 他允許 PHP 開發(fā)者在 P...
    summerbluet閱讀 2,244評(píng)論 1 16
  • 參考資料 官方網(wǎng)站 https://www.swoole.com/page/download PHP沒有像Pyth...
    JunChow520閱讀 2,951評(píng)論 0 6
  • 作者:卷毛偕酌馈(原創(chuàng)文章,歡迎點(diǎn)贊關(guān)注碑韵,轉(zhuǎn)載請(qǐng)聯(lián)系作者)跟我一起成為“生活玩家”赡茸,感謝關(guān)注。 從今年開始祝闻,我每天晚上...
    卷毛佟閱讀 583評(píng)論 4 10
  • 船停在碼頭是最安全的占卧,但那不是造船的目的;人待在家裡也是最舒服的联喘,但那不是人生的意義华蜒。 最美好的生活方式,莫過於和...
    香菇妹妹閱讀 294評(píng)論 0 0