3.創(chuàng)建server和client

一.創(chuàng)建服務(wù)端

//默認(rèn)tcp協(xié)議腥例,在我們的硬件通信中使用較多
$server = new Swoole\Server("0.0.0.0",9800);

//設(shè)置進(jìn)程數(shù)羊异,必須為正正數(shù)草雕,會(huì)產(chǎn)生2+worker_num個(gè)數(shù)個(gè)進(jìn)程
$server->set(['worker_num'=>2]);


//事件監(jiān)聽
//1卿泽。監(jiān)聽連接
//$server是Swoole\Server對(duì)象
//$fd是連接的文件描述符奋救,發(fā)送數(shù)據(jù)/關(guān)閉連接時(shí)需要此參數(shù)
//$reactorId來(lái)自哪個(gè)Reactor線程,第三個(gè)參數(shù)
$server->on('connect',function($server, $fd){
    echo "已連接到服務(wù)器:{$fd}".PHP_EOL;
});


//2玫坛。接收到客戶端消息
//$server结笨,Server對(duì)象
//$fd,TCP客戶端連接的唯一標(biāo)識(shí)符
//$reactor_id,TCP連接所在的Reactor線程ID
//$data炕吸,收到的數(shù)據(jù)內(nèi)容伐憾,可能是文本或者二進(jìn)制內(nèi)容
//參數(shù)$fd是唯一標(biāo)識(shí),用于區(qū)分不同的客戶端赫模,同時(shí)該參數(shù)是1-1600萬(wàn)之間可以復(fù)用的整數(shù)树肃。簡(jiǎn)單解釋下復(fù)用:假設(shè)現(xiàn)在客戶端1、2瀑罗、3處于連接中胸嘴,客戶端4要連接的話$fd就是4,但是不巧的是客戶端3連接不穩(wěn)定斩祭,斷掉了劣像,客戶端4連接到server的話,$fd就是3摧玫,這樣看的話1600W個(gè)連接夠用嗎耳奕?單機(jī)業(yè)務(wù)百萬(wàn)連接,已經(jīng)是很厲害了诬像,不用擔(dān)心
$server->on('receive',function($server, int $fd, int $reactor_id, string $data){
    echo "接收到客戶端消息:{$fd}".PHP_EOL;
    $server->send($fd, "Server: ".$data);
});

//3屋群。連接關(guān)閉
$server->on('close',function(){
    echo "已關(guān)閉連接".PHP_EOL;
});

//開啟服務(wù)
$server->start();

二.創(chuàng)建同步客戶端

同步client是同步阻塞的。一整套connect->send()->rev()->close()是同步進(jìn)行的颅停。如果需要大量的數(shù)據(jù)處理谓晌,后臺(tái)不能在規(guī)定的時(shí)間內(nèi)返回?cái)?shù)據(jù)會(huì)導(dǎo)致接收超時(shí),并且因?yàn)槭峭綀?zhí)行所以需要等待后臺(tái)數(shù)據(jù)的返回癞揉。

$client = new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_SYNC);

$client->connect('127.0.0.1',9800);

//發(fā)送數(shù)據(jù)纸肉,需要做粘包處理
$client->send('我是客戶端');

//接收數(shù)據(jù)
var_dump($client->recv());

//關(guān)閉,關(guān)閉不能這么草率喊熟,需要做應(yīng)答
$client->close();

三.創(chuàng)建異步客戶端

當(dāng)設(shè)定swoole_client為異步模式后柏肪,swoole_client就不能使用recv方法了,而需要通過(guò)on方法提供指定的回調(diào)函數(shù)芥牌,然后在回調(diào)函數(shù)當(dāng)中處理烦味,也就是小明等待奶茶(在4中解釋)做好了異步通知,消息發(fā)送跟接收并不是同步運(yùn)行的。

$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);

//必須注冊(cè)事件壁拉。注冊(cè)所有事件
$client->on("connect", function(swoole_client $cli) {
    $cli->send("GET / HTTP/1.1\r\n\r\n");
});

//異步客戶端發(fā)送消息后不能立即收到回復(fù)谬俄,但是會(huì)首先注冊(cè)好監(jiān)聽事件,收到消息后再處理
$client->on("receive", function(swoole_client $cli, $data){
    echo "Receive: $data";
    //$cli->send(str_repeat('A', 100)."\n");
    //sleep(1);
});

$client->on("error", function(swoole_client $cli){
    echo "error\n";
});
$client->on("close", function(swoole_client $cli){
    echo "Connection close\n";
});
$client->connect('127.0.0.1', 9800);

echo '寫日志';
echo '調(diào)用api'; 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弃理,一起剝皮案震驚了整個(gè)濱河市溃论,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痘昌,老刑警劉巖钥勋,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炬转,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡算灸,警方通過(guò)查閱死者的電腦和手機(jī)扼劈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)菲驴,“玉大人荐吵,你說(shuō)我怎么就攤上這事⌒霍幔” “怎么了捍靠?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)森逮。 經(jīng)常有香客問(wèn)我榨婆,道長(zhǎng),這世上最難降的妖魔是什么褒侧? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任良风,我火速辦了婚禮,結(jié)果婚禮上闷供,老公的妹妹穿的比我還像新娘烟央。我一直安慰自己,他們只是感情好歪脏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布疑俭。 她就那樣靜靜地躺著,像睡著了一般婿失。 火紅的嫁衣襯著肌膚如雪钞艇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天豪硅,我揣著相機(jī)與錄音哩照,去河邊找鬼。 笑死懒浮,一個(gè)胖子當(dāng)著我的面吹牛飘弧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砚著,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼次伶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了稽穆?” 一聲冷哼從身側(cè)響起冠王,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秧骑,沒(méi)想到半個(gè)月后版确,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乎折,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年绒疗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骂澄。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吓蘑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟冲,到底是詐尸還是另有隱情磨镶,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布健提,位于F島的核電站琳猫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏私痹。R本人自食惡果不足惜脐嫂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望紊遵。 院中可真熱鬧账千,春花似錦、人聲如沸暗膜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)学搜。三九已至娃善,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恒水,已是汗流浹背会放。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钉凌,地道東北人咧最。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像御雕,于是被迫代替她去往敵國(guó)和親矢沿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351