php使用event擴(kuò)展的io復(fù)用測(cè)試的示例
先要安裝event擴(kuò)展,這樣才可以使用libevent的事件機(jī)制
pecl install event
測(cè)試代碼
//連接重用
//創(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ù)用測(cè)試的示例的詳細(xì)內(nèi)容,更多關(guān)于php io復(fù)用測(cè)試的資料請(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ò)展
Laravel5.1 框架數(shù)據(jù)庫操作DB運(yùn)行原生SQL的方法分析
PHP實(shí)現(xiàn)獲取FLV文件的時(shí)間
阿里云PHP SMS短信服務(wù)驗(yàn)證碼發(fā)送方法
php使用workman框架實(shí)現(xiàn)socket服務(wù)以及連接客戶端
PHP中nowdoc和heredoc使用需要注意的一點(diǎn)

