亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

PHP socket初探 --- 含著淚也要磕完libevent(三)

suxier / 3672人閱讀

摘要:無(wú)數(shù)個(gè)專(zhuān)業(yè)送給啦啦啦啦,開(kāi)始碼注意,將監(jiān)聽(tīng)設(shè)置為非阻塞模式這里值得注意,我們聲明兩個(gè)數(shù)組用來(lái)保存事件和連接歡迎來(lái)到聊天室發(fā)言注意遵守當(dāng)?shù)胤煞ㄒ?guī)使用全局的和非阻塞模式下,注意的寫(xiě)法會(huì)稍微特殊一些。

原文地址:https://t.ti-node.com/thread/...

這段時(shí)間相比大家也看到了,本人離職了,一是在家偷懶實(shí)在懶得動(dòng)手,二是好不容易想寫(xiě)點(diǎn)兒時(shí)間全部砸到數(shù)據(jù)結(jié)構(gòu)和算法那里了。

今兒回過(guò)頭來(lái),繼續(xù)這里的文章。那句話是怎么說(shuō)的:

自己選擇的課題,含著淚也得磕完!”(圖文無(wú)關(guān),詳情點(diǎn)擊這里)。

其實(shí)在上一篇libevent文章中(《PHP socket初探 --- 硬著頭皮繼續(xù)libevent(二)》),如果你總結(jié)能力很好的話,可以觀察出來(lái)我們嘗試?yán)胠ibevent做了至少兩件事情:

毫秒級(jí)別定時(shí)器

信號(hào)監(jiān)聽(tīng)工具

大家都是碼php的,也喜歡把自己說(shuō)的洋氣點(diǎn)兒:“ 我是寫(xiě)服務(wù)器的 ”。所以,今天的第一個(gè)案例就是拿libevent來(lái)構(gòu)建一個(gè)簡(jiǎn)單粗暴的http服務(wù)器:

樣做
  if( ( $connect_socket = socket_accept( $listen_socket ) ) != false){
    echo "有新的客戶端:".intval( $connect_socket ).PHP_EOL;
    $msg = "HTTP/1.0 200 OK
Content-Length: 2

Hi";
    socket_write( $connect_socket, $msg, strlen( $msg ) );
    socket_close( $connect_socket );
  }
}, $listen_socket );
$event->add();
$event_base->loop();

將代碼保存為test.php,然后php http.php運(yùn)行起來(lái)。再開(kāi)一個(gè)終端,使用curl的GET方式去請(qǐng)求服務(wù)器,效果如下:

這是一個(gè)非常非常簡(jiǎn)單地不能再簡(jiǎn)單的http demo了,對(duì)于一個(gè)完整的http服務(wù)器而言,他還差比較完整的http協(xié)議的實(shí)現(xiàn)、多核CPU的利用等等。這些,我們會(huì)放到后面繼續(xù)深入的文章中開(kāi)始細(xì)化豐富。

還記得我們使用select系統(tǒng)調(diào)用實(shí)現(xiàn)了一個(gè)粗暴的在線聊天室,select這種業(yè)余的都敢出來(lái)混個(gè)聊天室,專(zhuān)業(yè)的絕對(duì)不能慫。

無(wú)數(shù)個(gè)專(zhuān)業(yè)???????????????送給libevent!

啦啦啦啦,開(kāi)始碼:

 $conn_item ){
        if( $conn != $conn_item ){
          $msg = intval( $conn )."說(shuō) : ".$buffer;
          socket_write( $conn_item, $msg, strlen( $msg ) );
        }   
      }   
    }, $conn );
    $event->add();
    // 此處值得注意,我們需要將事件本身存儲(chǔ)到全局?jǐn)?shù)組中,如果不保存,連接會(huì)話會(huì)丟失,也就是說(shuō)服務(wù)端和客戶端將無(wú)法保持持久會(huì)話
    $event_arr[ intval( $conn ) ] = $event;
  }
}, $fd );
$event->add();
$event_base->loop();

將代碼保存為server.php,然后php server.php運(yùn)行,再打開(kāi)其他三個(gè)終端使用telnet連接上聊天室,運(yùn)行效果如下所示:

嘗試放一張動(dòng)態(tài)圖試試,看看行不行,自己制作的gif都特別大,不知道帶寬夠不夠。

截止到這篇為止,死磕Libevent系列的大體核心三把斧就算是掄完了,弄完這些,你在遇到這些代碼的時(shí)候,就應(yīng)該不會(huì)像下面這個(gè)樣子了:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29647.html

相關(guān)文章

  • PHP socket初探 --- 硬著頭皮繼續(xù)libevent(二)

    摘要:類(lèi)就是產(chǎn)生各種不同類(lèi)型事件的產(chǎn)出器,比如定時(shí)器事件讀寫(xiě)事件等等,為了提升民族榮譽(yù)感,我們將這些各種事件比作各種戰(zhàn)斗機(jī)比如殲殲和殲。類(lèi)就相對(duì)容易介入了,這玩意顯然就是一個(gè)航空母艦了,為了提升民族榮譽(yù)感,我們就把類(lèi)當(dāng)作是遼寧艦。 [原文地址:https://blog.ti-node.com/blog...] 實(shí)際上php.net上是有event擴(kuò)展的使用說(shuō)明手冊(cè),但是呢,對(duì)于初學(xué)者來(lái)說(shuō)卻并...

    jokester 評(píng)論0 收藏0
  • PHP socket初探 --- 顫顫抖抖開(kāi)篇libevent(一)

    摘要:原文地址正如標(biāo)題所言,顫顫抖抖開(kāi)篇。于是只能是你自己,把單子上的個(gè)快遞逐次和收到的對(duì)比一遍,然后對(duì)比完畢后再把這個(gè)單子給了阿梅,然后阿梅繼續(xù)等。剃光頭前的阿梅,就是,不敢正眼看老板娘一眼。剃光頭后的阿梅,就是,可徒手接魔鬼隊(duì)的死亡之球。 [原文地址:https://blog.ti-node.com/blog...] 正如標(biāo)題所言,顫顫抖抖開(kāi)篇epoll。顫顫抖抖的原因大概也就是以前幾乎...

    levinit 評(píng)論0 收藏0
  • 小程序生命周期——小程序探索

    摘要:運(yùn)行機(jī)制小程序啟動(dòng)會(huì)有兩種情況,一種是冷啟動(dòng),一種是熱啟動(dòng)。建議小程序在必要時(shí)使用監(jiān)聽(tīng)內(nèi)存告警事件,進(jìn)行必要的內(nèi)存清理。 前言 以小程序?yàn)榍腥朦c(diǎn),深入理解總結(jié)方方面面的知識(shí)點(diǎn),做成系列文章,希望能得到大神的指點(diǎn)和幫助新人入門(mén),承上啟下才是好程序猿由于是系列第一篇文章,緊跟著的是一大段廢話,只關(guān)心技術(shù)的可以跳過(guò) 轉(zhuǎn)眼半年又要過(guò)去了,意味著來(lái)新公司快半年了,離上次寫(xiě)文章也半年了,渾渾噩噩...

    Caizhenhao 評(píng)論0 收藏0
  • PHP socket初探 --- 關(guān)于IO的一些枯燥理論

    摘要:原文地址要想更好了解編程,有一個(gè)不可繞過(guò)的環(huán)節(jié)就是在中,一切皆文件實(shí)際上要文件干啥不就是讀寫(xiě)么所以,這句話本質(zhì)就是才是王道用的打開(kāi)文件關(guān)閉文件讀讀寫(xiě)寫(xiě),這叫本地文件在編程中,本質(zhì)就是網(wǎng)絡(luò)所以,在開(kāi)始進(jìn)一步的編程前,我們必須先從概念上認(rèn)識(shí)好 [原文地址:https://blog.ti-node.com/blog...] 要想更好了解socket編程,有一個(gè)不可繞過(guò)的環(huán)節(jié)就是IO.在Lin...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<