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 相关文章推荐
isset和empty的区别
Jan 15 PHP
php google或baidu分页代码
Nov 26 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
php实现加减法验证码代码
Feb 14 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
php数组随机排序实现方法
Jun 13 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
php短址转换实现方法
2015/02/25 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP反射实际应用示例
2019/04/03 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
jquery map方法使用示例
2014/04/23 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
Vue程序调试的方法
2019/06/17 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python集合删除多种方法详解
2020/02/10 Python
基于python 取余问题(%)详解
2020/06/03 Python
python opencv肤色检测的实现示例
2020/12/21 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
英国家用电器购物网站:Hughes
2018/02/23 全球购物
优秀信贷员先进事迹
2014/01/31 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers