• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php使用event扩展的io复用测试的示例
    POST TIME:2021-10-18 03:37

    先要安装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 io复用测试的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • PHP代码加密和扩展解密实战
    • Thinkphp使用Zxing扩展库解析二维码内容图文讲解
    • PHP安装扩展mcrypt以及相关依赖项深入讲解
    • win10下 php安装seaslog扩展的详细步骤
    • PHP扩展安装方法步骤解析
    • 安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
    • PHP 扩展Memcached命令用法实例总结
    • php使用自带dom扩展进行元素匹配的原理解析
    • Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
    • docker 安装 php-fpm 服务 / 扩展 / 配置的示例教程详解
    • 如何动态查看及加载PHP扩展
    上一篇:Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
    下一篇:PHP如何通过带尾指针的链表实现'队列'
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信