首先要使用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的客户端实时读取推送日志文件相关推荐

  1. 基于websocket的网页实时消息推送与在线聊天(上篇)

    文章目录 @[toc] 基于websocket的网页实时消息推送与在线聊天(上篇) "使用dwebsocket在django中实现websocket" websocket原理图 d ...

  2. python websocket实时消息推送

    python websocket实时消息推送 十分想念顺店杂可... 本人写的渣,大神勿喷. 转载请附带本文链接,谢谢. 服务端代码 # -*- coding: utf-8 -*- # @Time : ...

  3. php通知websocket,php实现websocket实时消息推送

    php实现websocket实时消息推送,供大家参考,具体内容如下 SocketService.php /** * Created by xwx * Date: 2017/10/18 * Time: ...

  4. python websocket实现消息推送_python Django websocket 实时消息推送

    [实例简介] Django websocket 实时消息推送 服务端主动推送 调用 send(username, title, data, url) username:用户名 title:消息标题 d ...

  5. 消息推送技术干货:美团实时消息推送服务的技术演进之路

    本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...

  6. Django dWebScoket 实时消息推送

    一.WebScoket是什么 WebSocket 是 HTML5 提供的一种浏览器与服务器间进行全双工通讯的协议.依靠这种协议可以实现客户端和服务器端 ,一次握手,双向实时通信.目前主流的浏览器都支持 ...

  7. 开源实时消息推送系统 MPush

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

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

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

  9. netty服务器定时发送消息,netty+websocket+quartz实现消息定时推送

    netty+websocket+quartz实现消息定时推送&&IM聊天室 在讲功能实现之前,我们先来捋一下底层的原理,后面附上工程结构及代码 1.NIO NIO主要包含三大核心部分: ...

最新文章

  1. 2017全球硬科技创新大会今日开幕 科技大腕聚集共绘西安“硬科技”发展蓝图
  2. 提交代码到GitHub,小绿格却不增加?
  3. 用MediaPlayer做个带进度条可后台的音乐播放器
  4. dojo在ASP.NET中使用Ajax初步
  5. 培训是一种乐趣(3)
  6. 常用文献管理软件使用经验
  7. python未定义名称大小_名称错误:未定义名称“高度”
  8. 给项目添加spring的测试单元
  9. 构建之法阅读笔记(二)
  10. 下载 安装 破解Axure
  11. 去除CSDN 博客页广告的历程
  12. 洛谷 U87052 一线天
  13. 正态总体参数的假设检验
  14. 股债收益模型 量化实战篇(一)
  15. 快点来学吧!java保证线程安全的方式
  16. 利用随机森林填补缺失值
  17. 【因果推断的统计方法】综述与个人理解
  18. css制作导航栏的三角形
  19. 单元主服务器解决性能瓶颈的方法,HBase
  20. 第六章 图论 8 AcWing 1624. 地铁地图

热门文章

  1. 二值神经网络(Binary Neural Networks)最新综述
  2. NLP 专题论文解读:从 Chatbot 到 NER | PaperDaily #11
  3. 表白记 BFS求最短路径
  4. CSDN中的如何转载博文
  5. 关于word和excel相关的问题---亲测有用
  6. python for循环连续输入五个成绩判断等级_Python 入门(五)条件判断和循环
  7. 深度理解springboot集成cache缓存之源码解析
  8. Java获取指定日期的月初和月末日子
  9. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第八章——自编解析与答案
  10. BugKuCTF WEB 输入密码查看flag