php使用event扩展的io复用测试的示例


Posted in PHP onOctober 20, 2020

先要安装event扩展,这样才可以使用libevent的事件机制

pecl install event

测试代码

//连接重用
//创建资源流的上下文
$context=stream_context_create([
  'socket'=>[
    'backlog'=>2000
  ]]);
stream_context_set_option($context,'socket','so_reuseaddr',1); //设置连接重用
//sock_set_option($this->server, SOL_SOCKET, SO_REUSEADDR, 1); //复用还处于 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();
//监听服务端的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();
  //监听客户端socket
  $event=new Event($base,$client,Event::PERSIST |Event::READ | Event::WRITE,function ($client){
    $msg=fread($client,65535);
//
//     if($msg){ //匹配请求头包含了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);

 
    //当socket断开连接,删除事件

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


  });
  $event->add(); //加入事件监听
  $base->loop();

  //监视客户端
  //$event->del();//删除事件
});
$event->add(); //加入事件监听
var_dump($base->loop()); //调度挂起事件监听

php使用event扩展的io复用测试的示例

php使用event扩展的io复用测试的示例

以上就是php使用event扩展的io复用测试的示例的详细内容,更多关于php io复用测试的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
PHP网站提速三大“软”招
Oct 09 PHP
在线竞拍系统的PHP实现框架(二)
Oct 09 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 #PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 #PHP
php实现记事本案例
Oct 20 #PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 #PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 #PHP
PHP 99乘法表的几种实现代码
Oct 13 #PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 #PHP
You might like
PHP控制网页过期时间的代码
2008/09/28 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
js的with语句使用方法
2007/09/21 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
基python实现多线程网页爬虫
2015/09/06 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
kali中python版本的切换方法
2019/07/11 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
九年级物理教学反思
2014/01/29 职场文书
大学运动会入场词
2014/02/22 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
python基础之文件处理知识总结
2021/05/23 Python
Go语言grpc和protobuf
2022/04/13 Golang