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

資訊專欄INFORMATION COLUMN

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

suxier / 3451人閱讀

摘要:無數個專業送給啦啦啦啦,開始碼注意,將監聽設置為非阻塞模式這里值得注意,我們聲明兩個數組用來保存事件和連接歡迎來到聊天室發言注意遵守當地法律法規使用全局的和非阻塞模式下,注意的寫法會稍微特殊一些。

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

這段時間相比大家也看到了,本人離職了,一是在家偷懶實在懶得動手,二是好不容易想寫點兒時間全部砸到數據結構和算法那里了。

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

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

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

毫秒級別定時器

信號監聽工具

大家都是碼php的,也喜歡把自己說的洋氣點兒:“ 我是寫服務器的 ”。所以,今天的第一個案例就是拿libevent來構建一個簡單粗暴的http服務器:

樣做
  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運行起來。再開一個終端,使用curl的GET方式去請求服務器,效果如下:

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

還記得我們使用select系統調用實現了一個粗暴的在線聊天室,select這種業余的都敢出來混個聊天室,專業的絕對不能慫。

無數個專業???????????????送給libevent!

啦啦啦啦,開始碼:

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

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

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

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

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

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

相關文章

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

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

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

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

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

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

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

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

    sf190404 評論0 收藏0

發表評論

0條評論

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