學習swoole的心得

原文地址:學習swoole的心得php


什麼是swoole
swoole是PHP的異步、並行、高性能網絡通訊引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,異步Redis,數據庫鏈接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。 Swoole內置了Http/WebSocket服務器端/客戶端、Http2.0服務器端。
Swoole能夠普遍應用於互聯網、移動通訊、企業軟件、雲計算、網絡遊戲、物聯網(IOT)、車聯網、智能家居等領域。 使用PHP+Swoole做爲網絡通訊框架,可使企業IT研發團隊的效率大大提高,更加專一於開發創新產品。隨着咱們css

咱們爲何用swoolelinux

用戶打開了咱們的網站。他要作的就是勾選須要發郵件的代理商列表,而後把結算郵件發出去。
假如咱們須要發1封郵件,咱們寫個函數執行便可。考慮到網絡可能會稍微有點延遲,可是是能夠接受的,用戶會乖乖等你的網頁發完郵件了再關閉網頁。
假如咱們要發佈10封郵件,用一個for循環,循環10遍執行發郵件操做。這時候,也許10倍的網絡延遲會讓用戶稍微有點不耐煩,但勉強能夠等吧。
假如要發100封郵件,for循環100遍,用戶直接揭竿而起,什麼破網站!
但實際上,咱們極可能有超過1萬的郵件。怎麼處理這個延遲的問題?
答案就是用異步。把「發郵件」這個操做封裝,而後後臺異步地執行1萬遍。這樣的話,用戶提交網頁後,他所等待的時間只是「把發郵件任務請求推送進隊列裏」的時間。而咱們的後臺服務將在用戶看不見的地方跑。而swoole就爲咱們實現了異步隊列處理及併發等問題。nginx

如何使用數據庫

一、安裝swoole, 有兩種安裝方式:瀏覽器

一種是先下載安裝包,傳到服務器(記住必定是linux服務器)上,而後解壓,而後先cd到服務器的安裝包的位置,而後執行系統就會自動安裝,若是提示phpize不存在的話,就須要安裝一下phpize.bash

phpize
./configure
make 
sudo make install

另外一種方式直接執行服務器

pecl install swoole

用這種方式能夠自動下載安裝。
我採起的是第二種方式噢。
安裝完成,須要更改php.ini的配置,將swoole

extension=swoole.so

放在這個配置中,而後重啓nginx。
完成之後執行網絡

php -m

查看是否有swoole。有swoole說明安裝成功。
2.啓動server
以前看文檔我一直覺得swoole是個框架,須要咱們配置而後設置端口訪問,其實不是,swoole是php的擴展,咱們只須要在咱們的項目中增長server.php,或者其餘的名字,裏面的代碼簡單點能夠按照文檔上來寫,以下:

這裏就建立了一個TCP服務器,監聽本機9501端口,你也能夠改爲其餘的端口號,只要你的服務器能夠支持這個端口。
服務器端的server必須運行起來咱們才能使用swoole,異步執行。如何運行呢?咱們cd到你的項目下server.php 所在的文件夾,而後執行

php server.php

如何測試成功呢?咱們能夠關掉這個客戶端,從新打開鏈接服務器,而後執行

telnet 127.0.0.1 9501
hello
Server: hello

若是是這樣子說明成功了。
須要注意的是咱們若是修改了server.php,必須斷掉以前,而後從新打開。
我這邊寫了一個腳原本斷掉以前的,起名stop.sh

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

這須要放在和server.php同一個文件夾。
咱們須要cd到這個文件夾,執行sh stop.sh
三、client
這個是能夠在瀏覽器上執行的,咱們見一個client.php,代碼以下:

建立一個TCP的同步客戶端,此客戶端能夠用於鏈接到咱們server服務器。向服務器端發送一個hello world字符串,服務器會返回一個 Server: hello world字符串。以上是swoole簡單的安裝和連同

相關文章
相關標籤/搜索