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 相关文章推荐
BBS(php & mysql)完整版(四)
Oct 09 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
解析func_num_args与func_get_args函数的使用
Jun 24 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
一次因composer错误使用引发的问题与解决
Mar 06 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中调用JAVA
2006/10/09 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
用JavaScript显示随机图像或引用
2009/04/21 Javascript
Javascript 作用域使用说明
2009/08/13 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
JS作用域深度解析
2016/12/29 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
Python socket编程实例详解
2015/05/27 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python素数筛选法浅析
2018/03/19 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python装饰器练习题及答案
2019/11/01 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
会计自我鉴定范文
2013/10/06 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
运动会通讯稿100字
2015/07/20 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
Android studio 简单计算器的编写
2022/05/20 Java/Android