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 多个submit提交表单 处理方法
Jul 07 PHP
php中几种常见安全设置详解
Apr 06 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
浅谈php提交form表单
Jul 01 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
PHP实现打包下载文件的方法示例
Oct 07 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
php pdo连接数据库操作示例
Nov 18 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 shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
JQuery球队选择实例
2015/05/18 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
django的settings中设置中文支持的实现
2019/04/28 Python
学习python分支结构
2019/05/17 Python
python 魔法函数实例及解析
2019/09/25 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
什么是python类属性
2020/06/10 Python
Python爬虫教程知识点总结
2020/10/19 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
给老婆的婚前保证书
2014/02/01 职场文书
小学家长通知书评语
2014/12/31 职场文书
爱的承诺书
2015/01/20 职场文书
大连导游词
2015/02/12 职场文书
党小组推荐意见
2015/06/02 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
Java基础-封装和继承
2021/07/02 Java/Android