php 实时显示日志 web,[PHP] php作为websocket的客户端实时读取推送日志文件

2023-10-26

首先要使用composer来下载一个第三方扩展就可以实现php的websocket客户端,直接在当前目录生成下composer.json文件就可以了

composer require textalk/websocket

require('vendor/autoload.php');

use WebSocket\Client;

$client = new Client("ws://echo.websocket.org/");

$client->send("Hello WebSocket.org!");

echo $client->receive();

配合php的读取文件操作,只读取最新的追加的内容,下面代码为读取日志的客户端 , 发送给10.xx.2.xx:9501

#!/usr/bin/env php

require('vendor/autoload.php');

use WebSocket\Client;

if( != count($argv)){

fwrite(

STDERR,

"调用格式错误!使用格式 ./xxx filename".PHP_EOL

);

return ;

}

$file_name = $argv[];

define("MAX_SHOW", );

$file_size = ;

$file_size_new = ;

$add_size = ;

$ignore_size = ;

$fp = fopen($file_name, "r");

$client = new Client("ws://10.xx.2.xx:9501/");

while(){

clearstatcache();

$file_size_new = filesize($file_name);

$add_size = $file_size_new - $file_size;

if($add_size > ){

if($add_size > MAX_SHOW){

$ignore_size = $add_size - MAX_SHOW;

$add_size = MAX_SHOW;

fseek($fp, $file_size + $ignore_size);

}

//直接输出内容

// fwrite(

// STDOUT,

// fread($fp, $add_size)

// );

$client->send(fread($fp, $add_size));

$file_size = $file_size_new;

}

usleep();

}

fclose($fp);

服务端的代码使用swoole作为服务端,并且在收到消息后给所有的连接广播,执行服务端

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);

$server->on('open', function (Swoole\WebSocket\Server $server, $request)use($fds) {

echo "server: handshake success with fd{$request->fd}\n";

});

$server->on('message', function (Swoole\WebSocket\Server $server, $frame)use($fds) {

echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";

foreach($server->connections as $fd){

$server->push($fd, $frame->data);

}

});

$server->on('close', function ($ser, $fd) {

echo "client {$fd} closed\n";

});

$server->start();

4662145af1de5de5c994b39294c5bd92.png

执行客户端

ff01abe3559e4d4141d0f097c3cfc446.png

可以在浏览器直接实时输出

6de47fc6342c0f0564bcb829d5fd1fbf.png

实时数据推送webSocket

实时数据推送 在Web或移动项目中,服务器向客户端实时推送消息是一种常见的业务需求. 实现方式 Polling:轮询(俗称“拉”),即定期重新请求数据. Long-Polling:长轮询,是 Poll ...

开源实时消息推送系统 MPush

系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...

基于socket.io的实时消息推送

用户访问Web站点的过程是基于HTTP协议的,而HTTP协议的工作模式是:请求-响应,客户端发出访问请求,服务器端以资源数据响应请求. 也就是说,服务器端始终是被动的,即使服务器端的资源数据发生变化, ...

【js学习】js连接RabbitMQ达到实时消息推送

js连接RabbitMQ达到实时消息推送 最近在自己捯饬一个网站,有一个功能是需要后端处理完数据把数据发布到MQ中,前端再从MQ中接收数据.但是前端连接MQ又成了一个问题,在网上搜了下资料,点进去一篇 ...

未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在

C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表

本文主要是我在刚开始学习 SignalR 的技术总结,网上找的学习方法和例子大多只是翻译了官方给的一个例子,并没有给出其他一些经典情况的示例,所以才有了本文总结,我在实现推送简单的数据后,就想到了如何 ...

Spring之WebSocket网页聊天以及服务器推送

Spring之WebSocket网页聊天以及服务器推送 转自:http://www.xdemo.org/spring-websocket-comet/ /Springframework /Spring ...

WebSocket 的一些简单页面推送使用

因为做通信项目的时候,需要实时获取每个分机的当前状态,发现websocket还不错,只是对浏览器的要求比较高, 针对特定用户推送消息,网上有一些 public class GetHttpSession ...

Worktile中百万级实时消息推送服务的实现

Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/

随机推荐

Multiple Contexts have a path of 错误

1.问题描述 在eclipse里面启动tomcat的时候,看到报错,multiple contexts have a path.tomcat启动失败 2.解决办法 删除tomcat,重新加载部署tom ...

JQuery------$.ajax()的使用方法

菜鸟教程地址: http://www.runoob.com/jquery/ajax-ajax.html html(../Home/Index.cshtml)

iOS图片加载新框架 - FlyImage

FlyImage 整合了SDWebImage,FastImageCache,AFNetworking的优点,是一个新的性能高效.接口简单的图片加载框架. 特点 高效 可将多张小图解码后存储到同一张大图 ...

jQuery笔记一

陆续更新中..... 1,创建标签的时候可以提前写好,以后用clone()方法克隆即可. 如: var div=$("

Oracle性能调优(AWR)

一.AWR报告 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分,这点与Statspack生成的报告非常类似.不过AWR在生成报告时,可以选择生成 ...

Qt仿Android带特效的数字时钟源码分析(滑动,翻页,旋转效果)

这个数字时钟的源码可以在Qt Demo中找到,风格是仿Android的,不过该Demo中含有三种动画效果(鉴于本人未曾用过Android的系统,因此不知道Android的数字时钟是否也含有这三种效果) ...

C语言第三次作业---单层循环结构

一.PTA实验作业 题目一.最佳情侣身高差 1.实验代码 int N;//存放输入的人数 char sex; double hight1,hight2;//分别存放输入的身高和输出的身高 scanf( ...

Aidl跨进程通信机制-android学习之旅(87)

Aidl简介 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信的代码. 如果在 ...

201671010147 2017年8月27号 初学java的感想

在IT行业中,java无疑是最热门的,很多企业也青睐java,因为他的扩展性好,可以处理更多客户的数据,正是因为java有前景所以才吸引更多人去学习.在大一我们已经接触vhleC语言,大二开始就解除了 ...

【51nod】1239 欧拉函数之和 杜教筛

[题意]给定n,求Σφ(i),n<=10^10. [算法]杜教筛 [题解] 定义$s(n)=\sum_{i=1}^{n}\varphi(i)$ 杜教筛$\sum_{i=1}^{n}(\varph ...

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

php 实时显示日志 web,[PHP] php作为websocket的客户端实时读取推送日志文件 的相关文章

  • 后台管理系统-前端Vue项目搭建

    后台管理系统简介 从本章节开始我们将逐渐完成一套后台管理系统的搭建过程 前端技术 Vue3 2 后端搭建使用Spring Cloud Alibaba 1 Vue项目初始化 我们使用Vue ui 来初始化项目 1 1 使用vue ui创建项目
  • DOTA航拍图像数据集,免费资源下载35G遥感数据集

    DOTA Dataset遥感数据集下载 挂VPN会进的更快哦 下载链接最底下 DOTA Dataset A Large scale Dataset for Object DeTection in Aerial Images是用于航拍图像中目
  • 使用hexo+github搭建个人博客

    摘要 本文讲述如何使用hexo github搭建属于自己的个人博客 并且配置相应的主题使自己的博客更加美观 1 概念介绍 博客这东西大家应该都不陌生 网上有很多各式各样的博客 很多人也萌生了搭建自己的博客的想法 但是奈何技术有限 前后端技术
  • PyQt5 窗口自适应大小

    用pyqt5 Qt Designer设计界面时 希望窗口各控件可以随着鼠标拖动自适应的改变大小 一直没有找到方法 百度搜索了一圈 都说是要设置sizePolicy 将其Policy改为expanding即可 事实上99 的帖子都是抄来抄着
  • 全国行政区划下载(高德)

    高德地图API提供的行政区划查询 可以获取到行政区域的区号 城市编码 中心点 边界 下辖区域的详细信息 基于该工具进行扩展 对边界数据做转换处理 保存为GeoJson格式文件 方便使用 并且还可以选择转为WGS84坐标 下载地址 CLICK
  • 【C++】解析this指针

    一个类可以有多个对象 怎么能保证引用的是所指定的对象的数据成员呢 在每一个成员函数中都包含一个特殊的指针 这个指针的名字是固定的 即this 它是指向本类对象的一个指针 他的值是当前被调用的成员函数所在对象的起始地址 举例 include
  • 字符串的排列(全排列)——Java、回溯法

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入描述 输入一个字符串 长度不超过9 可能有字符重复
  • 奈奎斯特采样定理-为什么采样率需要时被测信号最高频率的两倍

    奈奎斯特采样定理 采样定理在1928年由美国电信工程师H 奈奎斯特首先提出来的 因此称为奈奎斯特采样定理 1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理 因此在苏联文献中称为科捷利尼科夫采样定理 1948年信息论的创始人C
  • MySQL数据库与SQL语言的规范

    文章中所有操作均是在 MySQL 5 7 版本下进行的 SQL语言 结构化查询语言 Structured Query Language 简称SQL 是一种特殊目的的编程语言 是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关
  • 数值类型翻转教学设计

    第1关 计算边长为整数的正方形面积 任务描述 本关任务 编写一个能计算正方形面积的小程序 相关知识 为了完成本关任务 你需要掌握 1 输入函数 2 字符串转整数 3 数值运算 4 输出函数 第2关 计算边长为浮点数的正方形面积 任务描述 本
  • UPC--换座位(一道没想到暴力就能过的题)

    题目描述 聪聪和同学们正在玩这样一个换座位的游戏 班上共有2n个少先队员 开始时每个少先队员坐在自己的板凳上排成一队 由聪聪开始击鼓 每次击鼓开始时 前n个同学坐到第2 4 2n个板凳上 后n个同学坐到第1 3 2n 1个板凳上 击鼓结束时
  • 【R语言】对图片进行裁剪 图片批量裁剪

    对图片进行裁剪 批量裁剪 示例如图 对图片进行裁剪 library magick pic lt image read study jpg plot pic print pic image info pic 500x300 10 20 Cro
  • 一个http请求就是一个线程吗?Java的服务是每收到一个请求就新开一个线程来处理吗?

    声明 本文并非原创 但是原文排版和语言逻辑有明显的问题 因此就对原文进行一个梳理 并加以补充 来帮助理解 原文链接 CSDN 一个http请求就是一个线程吗 java的服务是每收到一个请求就新开一个线程来处理吗 问题一 一个http请求就是
  • IE8 定义文档兼容性

    更新日期 2009 年 2 月 文档兼容性可定义 Internet Explorer 呈现网页的方式 本文将介绍文档兼容性 如何为网页指定文档兼容性模式以及如何确定网页的文档模式 简介 了解文档兼容性的必要性 了解文档兼容性模式 指定文档兼
  • qt 静态成员变量,C++--类的静态成员变量

    一 成员变量的回顾 1 通过对象名能够访问public成员变量 2 每个对象的成员变量都是专属的 3 成员变量不能在对象之间共享 Q 新的需求 1 统计在程序运行期间某个类的对象数目 2 保证程序的安全性 不能使用全局变量 3 随时可以获取
  • 从.weights中提取权重数据

    从 weights文件中提取权重数据 前言 weights文件 将 weights文件转换成 h5 转换脚本convert py 其他准备工作 转换成 h5 从 h5文件提取数据 关于 h5文件 摸清 h5的子文件夹名字 前言 我在做有关Y
  • 【基于MATLAB的数字图像处理】大作业·综合图像处理平台

    系列文章目录 基于MATLAB的数字图像处理 第一章 绪论 基于MATLAB的数字图像处理 第二章 视觉系统与图像处理系统 基于MATLAB的数字图像处理 第三章 基本图像变换 基于MATLAB的数字图像处理 第四章 图像增强 基于MATL
  • 力扣-235-二叉搜索树的最近公共祖先-javaScript实现

    一 题目链接 力扣题目链接 二 题意分析 因为本题操作的是二叉搜索树 所以我们可以根据二叉搜索树的特性来做题 关于二叉搜索树的特性在前面也有提到 这里就不再过多赘述 先说迭代 对于本题迭代法相当代码简单 三 代码实现 迭代法 var low
  • STM32系列(HAL库)——F103C8T6通过SPI方式读写W25Q64—(Flash存储模块)

    1 软件准备 1 编程平台 Keil5 2 CubeMX 3 XCOM 串口调试助手 2 硬件准备 1 W25Q64模块 2 F1的板子 本例使用经典F103C8T6 3 ST link 下载器 4 USB TTL模块 5 杜邦线若干 3

随机推荐

  • 基于小波变换的条纹图相位提取方法及matlab代码实现

    基于小波变换的条纹图相位提取方法及matlab代码实现 引言 在许多光学应用中 条纹图像是一种常见的景象 例如 条纹图像可以用于形貌量测 如三维重建 运动测量 如速度场测量 以及表面缺陷检测等领域 而在条纹图像处理中 相位提取是一项非常关键
  • Hashpump实现哈希长度扩展攻击

    Hashpump实现哈希长度扩展攻击 RCEME 0x01 HASH长度拓展攻击 哈希长度拓展攻击的原理有点过于复杂了 这里直接copy其他大佬的描述了 长度扩展攻击 length extension attack 是指针对某些允许包含额外
  • MYSQL访问控制与安全管理

    用户账户管理 利用select语句查看mysql数据库的使用者帐号 select user from mysql user 1 创建用户帐号 语法格式 create user lt 用户名 gt identified by password
  • 在师生们框架下的Spring mvc编程错误

    在ssm框架下 Springmvc 编程 时 出现传值问题 从后台传到前台时可以使用 Resource HttpSession session 采用jsp中的参数名与control层响应的的参数名一致传参 RequestMapping va
  • 微信小程序开发:实现微信支付功能

    微信支付是一种便捷 安全 快速的支付方式 可以在微信中轻松完成支付 不需要用户输入过多的信息 只需要简单的几步即可完成 在微信小程序中 也可以集成微信支付功能 为用户提供更加完善的购买体验 下面将详细介绍微信小程序开发中如何实现微信支付功能
  • 如何提升 API-First 设计流程

    一个 API First 设计应该具有可复用性 互操作性 可修改性 用户友好性 安全性 高效性 务实性 并且重要的是 与组织目标保持一致 这些基本特征将确保 API 能够有效地为 API First 组织战略和开发模式做出贡献 在这种模式中
  • 1入门基础知识

    1 C 98关键字 面试 C 语言中一共有多少个关键字 在C 98中有63个关键字 在回答的时候一定要带上语言标准带上 2 命名空间 2 1 概念 实际就是一个新的作用域 用来解决命名冲突问题 2 2 定义方式 方式一 namespace
  • Java的安装以及配置

    Java安装及配置 一 Java安装 一 准备工作 1 在磁盘中新建两个文件夹 建议不要新建在系统盘中 我将其分别命名为JDK1 8 jre1 8 0 102 作为一会儿安装使用到的路径 2 下载好工具软件包 我的是64位的 可以从官网下载
  • c语言数学字符,C语言中涉及的数学问题

    数学函数如何用C语言来表示 但是这些文件的头应写为 include或者 include math h sin x sinx asin x arcsinx cos x cosx acos x arccosx tan x tanx atan x
  • 关于敏捷的一点感悟笔记

    此笔记写于大约二 三年前 现贴出存档 有点顿悟的感觉了 发挥团队的力量 让每个人主动计划 主动设计 主动发表意见 任何人可以发起讨论 任何人可以发起改进 而不是一个人设计 一个人分配任务 一个人设计思路 那样就不是团队 是包工头和工人的关系
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感
  • 使用flex布局,子元素怎么高度自适应?

    1 想用flex实现这种布局 2 各个子元素高度不固定 从上到下依次排列 请问可以怎么实现 附 我对父元素定义了下面的规则 display flex flex flow row wrap 对子元素用p标签放了一些文本 未设置高度 结果显示效
  • 如何实现自定义的DataSource

    有时候我们希望能自己写一个component 并可以像DataSet 那样可以在设计时可以显示出其中的collection 以及collection中的可绑定的属性 一下提供了一个简要的介绍 IListSource 如果你的componen
  • 微信小程序插件接入

    微信小程序插件接入 插件 是可被添加到小程序内直接使用的功能组件 开发者可以像开发小程序一样开发一个插件 供其他小程序使用 同时 小程序开发者可直接在小程序内使用插件 无需重复开发 为用户提供更丰富的服务 如需开发插件 请阅读开发插件部分
  • java异常处理throw new RuntimeException(e)

    1 java try catch 异常后还会继续执行吗 catch 中如果你没有再抛出异常 那么catch之后的代码是可以继续执行的 但是try中 报错的那一行代码之后 一直到try结束为止的这一段代码 是不会再执行的 代码1 public
  • 跨域 nginx反向代理proxy未添加pathRewrite导致的404问题

    跨域 nginx反向代理proxy未添加pathRewrite导致的404问题 pathRewrite是使用proxy进行代理时 对请求路径进行重定向以匹配到正确的请求地址 未添加pathWrite时 proxy csdn target h
  • ecshop 404设置方法

    ecshop是一款非常好的B2C开源程序 但SEO方面做的不足的地方不少 比如404 TITLE方面 今天分享下ecshop404设置方法 默认的ECSHOP也做了这方面的设置 它的设置是这样的 当某个商品或者商品类别不存在的时候 自动跳转
  • Java 知识点整理-14.File类

    应用Alt 对变量调用方法进行快速打印 选中要打印的内容 按Alt 选最后一个选项 方法介绍中 未明确指明对文件或目录进行操作 则两者皆可 目录 File类的概述 File类的构造方法 File类的创建功能 File类的重命名和删除功能 F
  • ssh服务及其免密配置

    ssh服务 1 ssh是什么 掌握原理 ssh gt secure shell 安全的shell 用来远程管理服务器 网络上传输的内容时进行了加密 ssh 是一个应用层的协议 openssh 是一个软件 底层使用ssh协议来远程管理服务器
  • php 实时显示日志 web,[PHP] php作为websocket的客户端实时读取推送日志文件

    首先要使用composer来下载一个第三方扩展就可以实现php的websocket客户端 直接在当前目录生成下composer json文件就可以了 composer require textalk websocket require ve