成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

學(xué)習(xí)swoole的心得(一)

huashiou / 814人閱讀

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

什么是swoole
swoole是PHP的異步、并行、高性能網(wǎng)絡(luò)通信引擎,使用純C語(yǔ)言編寫(xiě),提供了PHP語(yǔ)言的異步多線程服務(wù)器,異步TCP/UDP網(wǎng)絡(luò)客戶端,異步MySQL,異步Redis,數(shù)據(jù)庫(kù)連接池,AsyncTask,消息隊(duì)列,毫秒定時(shí)器,異步文件讀寫(xiě),異步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ì)的效率大大提升,更加專注于開(kāi)發(fā)創(chuàng)新產(chǎn)品。隨著我們

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

用戶打開(kāi)了我們的網(wǎng)站。他要做的就是勾選需要發(fā)郵件的代理商列表,然后把結(jié)算郵件發(fā)出去。
假如我們需要發(fā)1封郵件,我們寫(xiě)個(gè)函數(shù)執(zhí)行即可。考慮到網(wǎng)絡(luò)可能會(huì)稍微有點(diǎn)延遲,但是是可以接受的,用戶會(huì)乖乖等你的網(wǎng)頁(yè)發(fā)完郵件了再關(guān)閉網(wǎng)頁(yè)。
假如我們要發(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í)際上,我們很可能有超過(guò)1萬(wàn)的郵件。怎么處理這個(gè)延遲的問(wèn)題?
答案就是用異步。把“發(fā)郵件”這個(gè)操作封裝,然后后臺(tái)異步地執(zhí)行1萬(wàn)遍。這樣的話,用戶提交網(wǎng)頁(yè)后,他所等待的時(shí)間只是“把發(fā)郵件任務(wù)請(qǐng)求推送進(jìn)隊(duì)列里”的時(shí)間。而我們的后臺(tái)服務(wù)將在用戶看不見(jiàn)的地方跑。而swoole就為我們實(shí)現(xiàn)了異步隊(duì)列處理及并發(fā)等問(wèn)題。

如何使用

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

phpize
./configure
make 
sudo make install

系統(tǒng)就會(huì)自動(dòng)安裝,如果提示phpize不存在的話,就需要安裝一下phpize.
另一種方式直接執(zhí)行

pecl install swoole

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

extension=swoole.so

放在這個(gè)配置中,然后重啟nginx。
完成以后執(zhí)行

php -m

查看是否有swoole。有swoole說(shuō)明安裝成功。
2.啟動(dòng)server
之前看文檔我一直以為swoole是個(gè)框架,需要我們配置然后設(shè)置端口訪問(wèn),其實(shí)不是,swoole是php的擴(kuò)展,我們只需要在我們的項(xiàng)目中增加server.php,或者其他的名字,里面的代碼簡(jiǎn)單點(diǎn)可以按照文檔上來(lái)寫(xiě),如下:

//創(chuàng)建Server對(duì)象,監(jiān)聽(tīng) 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501); 

//監(jiān)聽(tīng)連接進(jìn)入事件
$serv->on("connect", function ($serv, $fd) {  
    echo "Client: Connect.
";
});

//監(jiān)聽(tīng)數(shù)據(jù)發(fā)送事件
$serv->on("receive", function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ".$data);
});

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

//啟動(dòng)服務(wù)器
$serv->start(); 

這里就創(chuàng)建了一個(gè)TCP服務(wù)器,監(jiān)聽(tīng)本機(jī)9501端口,你也可以改成其他的端口號(hào),只要你的服務(wù)器可以支持這個(gè)端口。
服務(wù)器端的server必須運(yùn)行起來(lái)我們才能使用swoole,異步執(zhí)行。如何運(yùn)行呢?我們cd到你的項(xiàng)目下server.php 所在的文件夾,然后執(zhí)行

php server.php

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

telnet 127.0.0.1 9501
hello
Server: hello

如果是這樣子說(shuō)明成功了。
需要注意的是我們?nèi)绻薷牧藄erver.php,必須斷掉之前,然后重新打開(kāi)。
我這邊寫(xiě)了一個(gè)腳本來(lái)斷掉之前的,起名stop.sh

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

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

$client = new swoole_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)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21811.html

相關(guān)文章

  • Swoole學(xué)習(xí)手記()初識(shí)Swoole

    摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。參加工作有一段時(shí)間了,偶爾會(huì)聽(tīng)到,對(duì)我這種小白粗略看下文檔都會(huì)覺(jué)得很牛逼。個(gè)人理解就是解決這樣應(yīng)用場(chǎng)景的。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 參加工作有一段時(shí)間了,偶爾會(huì)聽(tīng)到swoole,對(duì)我這種PHP小白粗略看下文檔都會(huì)覺(jué)得很牛逼。由于學(xué)習(xí)成本比較高,自身對(duì)網(wǎng)絡(luò)異...

    yeyan1996 評(píng)論0 收藏0
  • 后端語(yǔ)言選型淺談

    摘要:再往后來(lái),也就是這種以事件循環(huán)常駐內(nèi)存為特點(diǎn)的后端平臺(tái),姑且能算是第四代后端平臺(tái)。 前不久回答了一個(gè)關(guān)于后端語(yǔ)言選型的問(wèn)題,寫(xiě)的回答也讓筆者有了很多感觸,因此在這里談?wù)撓伦约簩?duì)后端語(yǔ)言選型的心得體會(huì),姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語(yǔ)言發(fā)展歷史 Web 后端語(yǔ)言的興起是從靜態(tài)網(wǎng)頁(yè)向動(dòng)態(tài)網(wǎng)頁(yè)的發(fā)展所產(chǎn)生的,最早的動(dòng)態(tài)頁(yè)面技術(shù)就是 CGI 技術(shù),將客戶端的輸入交給 CGI...

    xcc3641 評(píng)論0 收藏0
  • 后端語(yǔ)言選型淺談

    摘要:再往后來(lái),也就是這種以事件循環(huán)常駐內(nèi)存為特點(diǎn)的后端平臺(tái),姑且能算是第四代后端平臺(tái)。 前不久回答了一個(gè)關(guān)于后端語(yǔ)言選型的問(wèn)題,寫(xiě)的回答也讓筆者有了很多感觸,因此在這里談?wù)撓伦约簩?duì)后端語(yǔ)言選型的心得體會(huì),姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語(yǔ)言發(fā)展歷史 Web 后端語(yǔ)言的興起是從靜態(tài)網(wǎng)頁(yè)向動(dòng)態(tài)網(wǎng)頁(yè)的發(fā)展所產(chǎn)生的,最早的動(dòng)態(tài)頁(yè)面技術(shù)就是 CGI 技術(shù),將客戶端的輸入交給 CGI...

    alighters 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<