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

資訊專欄INFORMATION COLUMN

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

suxier / 3426人閱讀

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

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

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

今兒回過頭來,繼續(xù)這里的文章。那句話是怎么說的:

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

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

毫秒級別定時器

信號監(jiān)聽工具

大家都是碼php的,也喜歡把自己說的洋氣點(diǎn)兒:“ 我是寫服務(wù)器的 ”。所以,今天的第一個案例就是拿libevent來構(gòu)建一個簡單粗暴的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)行起來。再開一個終端,使用curl的GET方式去請求服務(wù)器,效果如下:

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

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

無數(shù)個專業(yè)???????????????送給libevent!

啦啦啦啦,開始碼:

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/29647.html

相關(guān)文章

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

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

    jokester 評論0 收藏0
  • PHP socket初探 --- 顫顫抖抖開篇libevent(一)

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

    levinit 評論0 收藏0
  • 小程序生命周期——小程序探索

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

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

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

    sf190404 評論0 收藏0

發(fā)表評論

0條評論

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