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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
php静态文件生成类实例分析
Jan 03 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 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
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
平面设计自荐信
2013/10/07 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
死者家属慰问信
2015/03/24 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
高中运动会前导词
2015/07/20 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
MySQL里面的子查询的基本使用
2021/08/02 MySQL
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏