PHP Log时时查看小工具
以前Log都是打印在一个文档中,然后打开文件夹,最后打开文档查看里面的内容,每次打开文件夹感觉很烦。
前些日子看到同事开发.NET的时候,用他自己的一个小工具能够时时查看到Log的内容,非常方便,所以就想移植到PHP开发中。
一、查看效果
1、打开客户端小工具mylog.exe,在地址中输入localhost,端口输入5555,点击开始链接,旁边屏幕会显示“开始监听”的字样。
2、打开log.php页面,页面很朴素,就打印了一串字符。
3、查看mylog.exe,里面已接收到hello字符串
二、PHP代码
1)先要下载一个PHP版本的zmq.dll文件
1、打开链接http://pecl.php.net/package/zmq,点击某个版本的DLL。
2、然后在php.ini中设置
3、log.php中的代码,注意:这里使用的是Publish-subscribe模式,由PHP来Publish,client小工具做subscribe,下图是两者之间的关系。
<?php $context = new ZMQContext (); $publisher = $context->getSocket (ZMQ::SOCKET_PUB); $publisher->bind ("tcp://*:5555"); sleep(1); $publisher->send ('hello'); echo '已发送hello'; ?>
三、Client代码
1、总共放了两个文件,client中是可以直接运行的exe文件,mylog中是.NET源码,用VS2010编辑的。打开client文件,只要点击mylog.exe就能打开小工具。
2、clrzmq.dll是.NET中zmq的辅助dll文件,需要引入到源码中
3、在client中做zmq的sub操作,接收并将数据打印出来。
void LogReceiver() { using (ZmqContext ctx = ZmqContext.Create()) { using (ZmqSocket sub = ctx.CreateSocket(SocketType.SUB)) { sub.Connect("tcp://" + address.Text + ":" + port.Text); sub.SubscribeAll(); sub.ReceiveReady += (s, e) => { string log = sub.Receive(Encoding.UTF8); HandleLog(log); }; var poller = new Poller(new List<ZmqSocket> { sub }); while (_recvgo) { try { poller.Poll(); } catch (Exception ex) { } } } } }
在集成到实际项目中还会出现很多问题,我这里只是做个简单的demo展示一下。
demo下载:
http://download.csdn.net/detail/loneleaf1/7981505
参考资料:
http://zeromq.org/ zmq主页
http://pecl.php.net/package/zmq php dll下载
http://news.cnblogs.com/n/154000/ ZMQ的学习和研究
https://github.com/zeromq/clrzmq clrzmq — Official 0MQ Bindings for .NET and Mono
相关文章
- IdentityServer4 登录成功后,跳转到原来页面
- 使用高斯Redis实现二级索引
- 如何在软件研发阶段落地安全实践
- MRS离线数据分析:通过Flink作业处理OBS数据
- 张平安:加快云上数字创新,共建产业智慧生态
- 从解析HTML开始,破解页面渲染时间长难题
- Web开发小妙招:巧用ThreadLocal规避层层传值
- EntityFramework 7 OrderBy Skip Take-计算排序分页 SQL 翻译
- 详解SQL中Groupings Sets 语句的功能和底层实现逻辑
- HiEngine:可媲美本地的云原生内存数据库引擎
- 整理混乱的头文件,我用include what you use
- 一文掌握数仓中auto analyze的使用
- CANN算子:利用迭代器高效实现Tensor数据切割分块处理
- 实例讲解将Graph Explorer搬上JupyterLab
- 毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?
- GaussDB(for MySQL) :Partial Result Cache,通过缓存中间结果对算子进行加速
- 盘点华为云GaussDB(for Redis)六大秒级能力
- 程序员女友给我做了一个疲劳驾驶检测
- jfinal中如何使用过滤器监控Druid监听SQL执行?
- DevCloud加持下的青软,让教育“智”上云端