日志读取_php作为websocket的客户端实时读取推送日志文件
首先要使用composer来下载一个第三方扩展就可以实现php的websocket客户端,直接在当前目录生成下composer.json文件就可以了。
composer require textalk/websocket
require('vendor/autoload.php');
use WebSocketClient;
$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
<?php
require('vendor/autoload.php');use WebSocketClient;if(2 != count($argv)){fwrite(STDERR,"调用格式错误!使用格式 ./xxx filename".PHP_EOL); return 1;
}$file_name = $argv[1];
define("MAX_SHOW", 8192);$file_size = 0;
$file_size_new = 0;
$add_size = 0;
$ignore_size = 0;
$fp = fopen($file_name, "r");
$client = new Client("ws://10.xx.2.xx:9501/");
while(1){clearstatcache();$file_size_new = filesize($file_name);$add_size = $file_size_new - $file_size;if($add_size > 0){ 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(50000);
}fclose($fp);
服务端的代码使用swoole作为服务端,并且在收到消息后给所有的连接广播,执行服务端
<?php
$server = new SwooleWebSocketServer("0.0.0.0", 9501);
$server->on('open', function (SwooleWebSocketServer $server, $request)use($fds) {echo "server: handshake success with fd{$request->fd}n";
});$server->on('message', function (SwooleWebSocketServer $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} closedn";
});$server->start();
执行客户端
可以在浏览器直接实时输出
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要
PHP进阶架构师>>>视频、面试文档免费获取shimo.im
或 者关注咱们下面的知乎专栏
PHP架构师圈子zhuanlan.zhihu.com
日志读取_php作为websocket的客户端实时读取推送日志文件相关推荐
- 基于websocket的网页实时消息推送与在线聊天(上篇)
文章目录 @[toc] 基于websocket的网页实时消息推送与在线聊天(上篇) "使用dwebsocket在django中实现websocket" websocket原理图 d ...
- python websocket实时消息推送
python websocket实时消息推送 十分想念顺店杂可... 本人写的渣,大神勿喷. 转载请附带本文链接,谢谢. 服务端代码 # -*- coding: utf-8 -*- # @Time : ...
- php通知websocket,php实现websocket实时消息推送
php实现websocket实时消息推送,供大家参考,具体内容如下 SocketService.php /** * Created by xwx * Date: 2017/10/18 * Time: ...
- python websocket实现消息推送_python Django websocket 实时消息推送
[实例简介] Django websocket 实时消息推送 服务端主动推送 调用 send(username, title, data, url) username:用户名 title:消息标题 d ...
- 消息推送技术干货:美团实时消息推送服务的技术演进之路
本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...
- Django dWebScoket 实时消息推送
一.WebScoket是什么 WebSocket 是 HTML5 提供的一种浏览器与服务器间进行全双工通讯的协议.依靠这种协议可以实现客户端和服务器端 ,一次握手,双向实时通信.目前主流的浏览器都支持 ...
- 开源实时消息推送系统 MPush
系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...
- 未读消息(小红点),前端 与 RabbitMQ 实时消息推送实践,贼简单~
前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...
- netty服务器定时发送消息,netty+websocket+quartz实现消息定时推送
netty+websocket+quartz实现消息定时推送&&IM聊天室 在讲功能实现之前,我们先来捋一下底层的原理,后面附上工程结构及代码 1.NIO NIO主要包含三大核心部分: ...
最新文章
- 2017全球硬科技创新大会今日开幕 科技大腕聚集共绘西安“硬科技”发展蓝图
- 提交代码到GitHub,小绿格却不增加?
- 用MediaPlayer做个带进度条可后台的音乐播放器
- dojo在ASP.NET中使用Ajax初步
- 培训是一种乐趣(3)
- 常用文献管理软件使用经验
- python未定义名称大小_名称错误:未定义名称“高度”
- 给项目添加spring的测试单元
- 构建之法阅读笔记(二)
- 下载 安装 破解Axure
- 去除CSDN 博客页广告的历程
- 洛谷 U87052 一线天
- 正态总体参数的假设检验
- 股债收益模型 量化实战篇(一)
- 快点来学吧!java保证线程安全的方式
- 利用随机森林填补缺失值
- 【因果推断的统计方法】综述与个人理解
- css制作导航栏的三角形
- 单元主服务器解决性能瓶颈的方法,HBase
- 第六章 图论 8 AcWing 1624. 地铁地图
热门文章
- 二值神经网络(Binary Neural Networks)最新综述
- NLP 专题论文解读:从 Chatbot 到 NER | PaperDaily #11
- 表白记 BFS求最短路径
- CSDN中的如何转载博文
- 关于word和excel相关的问题---亲测有用
- python for循环连续输入五个成绩判断等级_Python 入门(五)条件判断和循环
- 深度理解springboot集成cache缓存之源码解析
- Java获取指定日期的月初和月末日子
- 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第八章——自编解析与答案
- BugKuCTF WEB 输入密码查看flag