国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

學習swoole的心得(一)

huashiou / 746人閱讀

摘要:假如我們要發布封郵件,用一個循環,循環遍執行發郵件操作。我采取的是第二種方式噢。安裝完成,需要更改的配置,將放在這個配置中,然后重啟。向服務器端發送一個字符串,服務器會返回一個字符串。以上是簡單的安裝和連同。

什么是swoole
swoole是PHP的異步、并行、高性能網絡通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,異步Redis,數據庫連接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。 Swoole內置了Http/WebSocket服務器端/客戶端、Http2.0服務器端。
Swoole可以廣泛應用于互聯網、移動通信、企業軟件、云計算、網絡游戲、物聯網(IOT)、車聯網、智能家居等領域。 使用PHP+Swoole作為網絡通信框架,可以使企業IT研發團隊的效率大大提升,更加專注于開發創新產品。隨著我們

我們為什么用swoole

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

如何使用

1、安裝swoole
有兩種安裝方式,一種是先下載安裝包,傳到服務器(記住一定是linux服務器)上,然后解壓,然后先cd到服務器的安裝包的位置,然后執行

phpize
./configure
make 
sudo make install

系統就會自動安裝,如果提示phpize不存在的話,就需要安裝一下phpize.
另一種方式直接執行

pecl install swoole

用這種方式可以自動下載安裝。
我采取的是第二種方式噢。
安裝完成,需要更改php.ini的配置,將

extension=swoole.so

放在這個配置中,然后重啟nginx。
完成以后執行

php -m

查看是否有swoole。有swoole說明安裝成功。
2.啟動server
之前看文檔我一直以為swoole是個框架,需要我們配置然后設置端口訪問,其實不是,swoole是php的擴展,我們只需要在我們的項目中增加server.php,或者其他的名字,里面的代碼簡單點可以按照文檔上來寫,如下:

//創建Server對象,監聽 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501); 

//監聽連接進入事件
$serv->on("connect", function ($serv, $fd) {  
    echo "Client: Connect.
";
});

//監聽數據發送事件
$serv->on("receive", function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ".$data);
});

//監聽連接關閉事件
$serv->on("close", function ($serv, $fd) {
    echo "Client: Close.
";
});

//啟動服務器
$serv->start(); 

這里就創建了一個TCP服務器,監聽本機9501端口,你也可以改成其他的端口號,只要你的服務器可以支持這個端口。
服務器端的server必須運行起來我們才能使用swoole,異步執行。如何運行呢?我們cd到你的項目下server.php 所在的文件夾,然后執行

php server.php

如何測試成功呢?我們可以關掉這個客戶端,重新打開連接服務器,然后執行

telnet 127.0.0.1 9501
hello
Server: hello

如果是這樣子說明成功了。
需要注意的是我們如果修改了server.php,必須斷掉之前,然后重新打開。
我這邊寫了一個腳本來斷掉之前的,起名stop.sh

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

這需要放在和server.php同一個文件夾。
我們需要cd到這個文件夾,執行sh stop.sh
3、client
這個是可以在瀏覽器上執行的,我們見一個client.php,代碼如下:

$client = new swoole_client(SWOOLE_SOCK_TCP);

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

創建一個TCP的同步客戶端,此客戶端可以用于連接到我們server服務器。向服務器端發送一個hello world字符串,服務器會返回一個 Server: hello world字符串。
以上是swoole簡單的安裝和連同。
yii2集成swoole
有需要的朋友可以去yii2-swoole這個地址下載,yii2集成swoole的代碼。

參考資料:
關于異步任務隊列

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21811.html

相關文章

  • Swoole學習手記()初識Swoole

    摘要:目錄初識創建服務器上創建服務器下異步任務持續更新中。。。參加工作有一段時間了,偶爾會聽到,對我這種小白粗略看下文檔都會覺得很牛逼。個人理解就是解決這樣應用場景的。 目錄 初識Swoole 創建服務器(上) 創建服務器(下) 異步任務task 持續更新中。。。 參加工作有一段時間了,偶爾會聽到swoole,對我這種PHP小白粗略看下文檔都會覺得很牛逼。由于學習成本比較高,自身對網絡異...

    yeyan1996 評論0 收藏0
  • 后端語言選型淺談

    摘要:再往后來,也就是這種以事件循環常駐內存為特點的后端平臺,姑且能算是第四代后端平臺。 前不久回答了一個關于后端語言選型的問題,寫的回答也讓筆者有了很多感觸,因此在這里談論下自己對后端語言選型的心得體會,姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語言發展歷史 Web 后端語言的興起是從靜態網頁向動態網頁的發展所產生的,最早的動態頁面技術就是 CGI 技術,將客戶端的輸入交給 CGI...

    xcc3641 評論0 收藏0
  • 后端語言選型淺談

    摘要:再往后來,也就是這種以事件循環常駐內存為特點的后端平臺,姑且能算是第四代后端平臺。 前不久回答了一個關于后端語言選型的問題,寫的回答也讓筆者有了很多感觸,因此在這里談論下自己對后端語言選型的心得體會,姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語言發展歷史 Web 后端語言的興起是從靜態網頁向動態網頁的發展所產生的,最早的動態頁面技術就是 CGI 技術,將客戶端的輸入交給 CGI...

    alighters 評論0 收藏0

發表評論

0條評論

huashiou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<