主頁 > 知識(shí)庫 > php使用event擴(kuò)展的io復(fù)用測試的示例

php使用event擴(kuò)展的io復(fù)用測試的示例

熱門標(biāo)簽:400電話鄭州申請(qǐng) 地圖標(biāo)注視頻廣告入駐 ai電話機(jī)器人加盟代理 OMG地圖標(biāo)注app gps 地圖標(biāo)注軟件 黔江400電話如何辦理 招標(biāo)自動(dòng)語音外呼系統(tǒng) 電銷機(jī)器人便宜的有嗎 中原區(qū)電話機(jī)器人價(jià)格

先要安裝event擴(kuò)展,這樣才可以使用libevent的事件機(jī)制

pecl install event

測試代碼

//連接重用
//創(chuàng)建資源流的上下文
$context=stream_context_create([
  'socket'=>[
    'backlog'=>2000
  ]]);
stream_context_set_option($context,'socket','so_reuseaddr',1); //設(shè)置連接重用
//sock_set_option($this->server, SOL_SOCKET, SO_REUSEADDR, 1); //復(fù)用還處于 TIME_WAIT
$socket = stream_socket_server("tcp://0.0.0.0:8070", $errno, $errstr,STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,$context);
stream_set_blocking($socket,false);//非阻塞
//綁定事件
$base=new EventBase();
//監(jiān)聽服務(wù)端的socket
$event=new Event($base,$socket,Event::PERSIST |Event::READ | Event::WRITE,function ($socket)use($base){

  $client = stream_socket_accept($socket);
  //stream_set_blocking($client,false);//非阻塞
//    var_dump($client);
//    $content='21335435';
//    $string="HTTP/1.1 200 OK\r\n";
//    $string.="Content-Type: text/html;charset=utf-8\r\n";
//    $string.="Content-Length: ".strlen($content)."\r\n\r\n";
//    fwrite($client,$string.$content);
//    fclose($client);

  //global $base;

  //var_dump($socket,$client);

  $base=new EventBase();
  //監(jiān)聽客戶端socket
  $event=new Event($base,$client,Event::PERSIST |Event::READ | Event::WRITE,function ($client){
    $msg=fread($client,65535);
//
//     if($msg){ //匹配請(qǐng)求頭包含了keep-alive
//
//     }

    $content='hello world';
    $string="HTTP/1.1 200 OK\r\n";
    $string.="Content-Type: text/html;charset=utf-8\r\n";
    $string.="Connection: keep-alive\r\n";
    $string.="Content-Length: ".strlen($content)."\r\n\r\n";
    fwrite($client,$string.$content);

    fclose($client);

 
    //當(dāng)socket斷開連接,刪除事件

    $event->del();//刪除事件


  });
  $event->add(); //加入事件監(jiān)聽
  $base->loop();

  //監(jiān)視客戶端
  //$event->del();//刪除事件
});
$event->add(); //加入事件監(jiān)聽
var_dump($base->loop()); //調(diào)度掛起事件監(jiān)聽

以上就是php使用event擴(kuò)展的io復(fù)用測試的示例的詳細(xì)內(nèi)容,更多關(guān)于php io復(fù)用測試的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • PHP代碼加密和擴(kuò)展解密實(shí)戰(zhàn)
  • Thinkphp使用Zxing擴(kuò)展庫解析二維碼內(nèi)容圖文講解
  • PHP安裝擴(kuò)展mcrypt以及相關(guān)依賴項(xiàng)深入講解
  • win10下 php安裝seaslog擴(kuò)展的詳細(xì)步驟
  • PHP擴(kuò)展安裝方法步驟解析
  • 安裝PHP擴(kuò)展時(shí)解壓官方 tgz 文件后沒有configure文件無法進(jìn)行配置編譯的問題
  • PHP 擴(kuò)展Memcached命令用法實(shí)例總結(jié)
  • php使用自帶dom擴(kuò)展進(jìn)行元素匹配的原理解析
  • Thinkphp 框架配置操作之動(dòng)態(tài)配置、擴(kuò)展配置及批量配置實(shí)例分析
  • docker 安裝 php-fpm 服務(wù) / 擴(kuò)展 / 配置的示例教程詳解
  • 如何動(dòng)態(tài)查看及加載PHP擴(kuò)展

標(biāo)簽:那曲 哈密 池州 北京 阿里 孝感 濟(jì)源 日照

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php使用event擴(kuò)展的io復(fù)用測試的示例》,本文關(guān)鍵詞  php,使用,event,擴(kuò)展,的,復(fù)用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php使用event擴(kuò)展的io復(fù)用測試的示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于php使用event擴(kuò)展的io復(fù)用測試的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章