php event监听

2023-11-11

<?php


//连接重用
//创建资源流的上下文
$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:8090", $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='21335435';
        $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()); //调度挂起事件监听






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php event监听 的相关文章

  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • PHP 下载脚本输出损坏的文件

    我正在用 PHP 为我的 CMS 构建一个文件下载类 当时我注意到它以不同的编码格式输出文件 我尝试使用 readfile file get contents fread 但似乎都在做同样的事情 这就像与输出缓冲有关的东西 我使用脚本下载的
  • Laravel 5.4 将json保存到数据库

    帮我将 json 保存到数据库 表字段类型 文本 我有带有强制转换数组的模型 class Salesteam extends Model protected casts team members gt array 我想要像这样 index
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • 在php中获取大于2GB的文件大小的最佳方法?

    我想检查本地驱动器上的文件大小windows OS 但是PHP原生函数filesize 仅当文件大小小于时才有效2GB 大于的文件2GB将返回错误的数字 那么 是否有其他方法来获取大于的文件大小2GB 非常感谢 您始终可以使用系统的文件大小
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • Laravel 读写连接不同步

    我在 Laravel 5 2 应用程序中使用读写 MySQL 连接设置 mysql gt write gt host gt env DB HOST WRITE localhost read gt host gt env DB HOST RE
  • Memcache 不会刷新或清除内存

    我一直在尝试清除我的内存缓存 因为我注意到使用时存储占用了近 30 的服务器内存ps aux 所以我运行了以下 php 代码 memcache new Memcache memcache gt connect localhost 11211
  • 在另一个文件中扩展类的正确方法是什么?

    这就是我在 foo php 中的内容 class Foo public foo NULL public foo2 NULL public function setFoo foo foo2 this gt foo foo this gt fo
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 优雅地退出 Laravel 作用域

    我有一个范围 它根据用户角色以限制方式起作用 您可以将一组规则转发到限制数据库最终输出的范围 一个非常简化的角色限制示例 first name foo 只会返回其记录first name开始于foo 这实际上意味着我已禁止具有该角色的用户查
  • 当路由不存在时重定向 laravel 4

    我正在使用 laravel 4 当我的项目处于生产模式时 我得到 抱歉 找不到您要查找的页面 当我到达一条不存在的路线时 当我 grep 我的代码时 它在两个地方找到 vendor symfony debug Symfony Compone
  • Yii 未检测到骆驼案例操作

    伊伊正在给我404 Error如果我声明这样的操作 站点控制器 php public function actionRegisterUser 这就是我在main php label gt Register User url gt site
  • Lumen:无法打开流:.../vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 中的权限被拒绝

    My OS is ubuntu 16 04 and I am running Lumen 5 5 When I try to run the app in the browser I get an error 500 我在 var log
  • 将 echo 和 print 合并到一个语句中

    echo 1 print 2 3 返回 214 脚本如何以 14 结尾 当你这样做时 echo 1 print 2 3 PHP 会做 demo http codepad viper 7 com OfrNrs line op fetch ex
  • sqlite3和pdo_sqlite有什么区别

    我正在将我的 Web 应用程序从 MySQL 迁移到 SQLite 数据库 我发现有两个 PHP 扩展用于与 sqlite 通信 php sqlite3 dll and php pdo sqlite dll 什么扩展比较好 或者另一个问题
  • PHP date() 和 strtotime() 返回错误的月份 31 日

    我在用着date and strtotime 函数在下拉列表中显示接下来的 3 个月 PHP代码 echo date m Y strtotime 0 months echo date m Y strtotime 1 months echo
  • 管理产品页面自定义字段显示在购物车和结账中

    我在产品页面的常规设置选项卡上的 WooCommerce 管理中创建了一个自定义字段 以插入几天的制造时间 我想在购物车和结帐页面上每个产品名称上方显示此自定义字段值 这是我的代码 Insert a Custom Admin Field f
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p

随机推荐

  • 遇到Uncaught SyntaxError: missing ) after argument list 解决小思路

    vscode运行前端代码程序没有报错 控制台报错 SyntaxError missing after argument list 意思是有语法错误 仔细检查是es6语法低版本浏览器不支持导致的 升级最新版chrome浏览器 就解决了 这只是
  • 基于C++的水灵VTK8学习笔记3(VTK图形处理)

    VTK资料分享 张晓东的 VTK图形图像开发进阶 全套资料 包含书籍电子版 配套每章节所有源码 实现效果图和工程配置文件 水灵VTK学习全套资料 包含全部视频 PPT 源码和每个项目对应的工程配置文件CmakeLists txt 水灵VT视
  • Element中el-select下拉框无法回显

    使用elementUI时 在页面编辑时 下拉框回显数据有问题 这里主题类型默认选中类型为1的主题 并显示主题类型
  • 将一个有序的链表转化为一个二叉搜索树

    题目 Given a singly linked list where elements are sorted in ascending order convert it to a height balanced BST 解题思路 解决这道
  • 解决SpringBoot jar包中的文件读取问题

    前言 SpringBoot微服务已成为业界主流 从开发到部署都非常省时省力 但是最近小明开发时遇到一个问题 在代码中读取资源文件 比如word文档 导出模版等 本地开发时可以正常读取 但是 当我们打成jar包发布到服务器后 再次执行程序时就
  • Qt--自定义搜索控件,QLineEdit带前缀图标

    写在前面 这里自定义一个搜索控件 通过自定义LineEdit的textChange信号 搜索指定内容 并以QCheckBox的方式显示在QListWidget中 开发版本 Qt 5 15 2 Qt Creator10 0 2 编译环境 ms
  • 解决Failed to connect to 127.0.0.1 port 1080: Connection refused 报错

    https www jianshu com p 13099813f23d 解决Failed to connect to 127 0 0 1 port 1080 Connection refused 报错 0 4842018 07 03 14
  • 零基础JAVA——黑马程序员课程笔记

    视频地址 点击访问 我这里开发工具有时候用eclipse有时候用IDEA 看每个人的习惯 文中代码部分不会和老师讲的一模一样 因为我都是在看到老师给的案例后自己尝试写的 推荐大家这样做 可以帮助大家掌握 文章目录 JAVA语言发展史 JAV
  • 阿里云centos7安装mongodb,并开启远程连接

    1 下载mongodb 使用命令 curl O https fastdl mongodb org linux mongodb linux x86 64 3 2 9 tgz 2 上传到服务器 我这里用的是阿里云的远程服务器 并解压和重命名 r
  • charles使用

    安装 HTTPS的SSL证书配置 windows电脑 管理员模式打开Charles gt help gt SSL Proxying gt Install Chrales Root Certificate 安装证书 gt 下一步 gt 选择证
  • Gradle自定义插件详解

    首先认识plugin plugin采用groovy语言来编写 如果你对groovy语言不是很熟悉 请首先过一下groovy语法结构 groovy是运行于JVM的敏捷脚本语言 其最后会被编译成标准的JAVA语言 groovy语言最核心的应该是
  • ZIGBEE抓包工具Ubiqua使用介绍

    一 软件安装 Ubiqua 软件下载链接 https download csdn net download m pfly fish 12050973 二 安装CC2531抓包驱动 驱动软件下载链接 https download csdn n
  • Android am命令启动Service,Activity,BroadcastReceiver

    m命令启动Service Activity BroadcastReceiver 在frameworks base cmds am src com android commands am 一 am命令启动Activity am start n
  • Vlc.DotNet播放本地文件时的路径编码

    在播放本地媒体文件时 VLC会对文件路径进行编码 将中文字符编码为utf 8 在程序中也需要如此 否则不能正常播放 C 中可以用 System Web HttpUtility UrlEncode string System Text Enc
  • LR安装遇到 Cannot save the license information because access to the registry is denied

    在安装LoadRunner11时 会出现多种问题 在此以我遇到的问题一一进行解决 1 在首先安装时导入注册文件会遇到一个错误 就是 此时你需要一个工具 deletelicense 清除注册表信息的一个工具 可以轻易下载到 然后把LoadeR
  • 深入理解C++中的move和forward!

    导语 在C 11标准之前 C 中默认的传值类型均为Copy语义 即 不论是指针类型还是值类型 都将会在进行函数调用时被完整的复制一份 对于非指针而言 开销及其巨大 因此在C 11以后 引入了右值和Move语义 极大地提高了效率 本文介绍了在
  • 保险智能理赔-医疗票据OCR识别解决方案

    基于对健康险理赔行业的深刻洞察和理解 以领先的医疗AI数智化能力打通健康险理赔全流程 通过RPA人机协作实现对理赔材料的智能录入和初审工作 释放大量的专业录单和审核人力 减少企业运营成本 面临痛点 1 人工录入成本高 涉及个人证件 保险单据
  • Visual Attention Network(VAN)

    Visual Attention Network阅读翻译笔记 原文 https arxiv org abs 2202 09741 代码 https github com Visual Attention Network 摘要 虽然最初是为自
  • oracle 排序后取中间的数据

    用minus取 3000和5000的差值 排序后取序列为3000 5000的数据 select from table name t where rownum lt 5000 order by t sn asc minus select fr
  • php event监听