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常用代码
Nov 23 PHP
PHP音乐采集(部分代码)
Feb 14 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
PHP实现的策略模式简单示例
Aug 25 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
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
前端性能优化及技巧
2016/05/06 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
python 多进程通信模块的简单实现
2014/02/20 Python
理解python多线程(python多线程简明教程)
2014/06/09 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
Python中的字符串替换操作示例
2016/06/27 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python实现宿舍管理系统
2019/11/22 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
python中doctest库实例用法
2020/12/31 Python
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
双方协议书
2014/04/22 职场文书
班级年度安全计划书
2014/05/01 职场文书
党员政治学习材料
2014/05/14 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
社会学专业求职信
2014/07/17 职场文书
二人合伙经营协议书
2014/09/13 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
工作失误检讨书
2015/01/26 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python