以前的日志都是打印在一个文档中,然后打开文件夹,最后打开文档查看里面的内容,每次打开文件夹感觉很烦。
前些日子看到同事开发。净的时候,用他自己的一个小工具能够时时查看到日志的内容,非常方便,所以就想移植到PHP开发中。
,
一、查看效果
1,打开客户端小工具mylog。exe,在地址中输入localhost,端口输入5555点击开始链接,旁边屏幕会显示“开始监听”的字样。
,
2,打开日志。php页面页,面很朴素,就打印了一串字符。
,
3,查看mylog。exe,里面已接收到你好字符串
,
二,PHP代码
1)先要下载一个PHP版本的zmq。dll文件
1,打开链接http://pecl.php.net/package/zmq,点击某个版本的dll。
2,然后在php。ini中设置
3,日志。php中的代码,注意:这里使用的是发布-订阅模式,由php来发布,客户端小工具做订阅,下图是两者之间的关系。
& lt; ? php ,,, context 美元;=,new ZMQContext (),,,,, publisher 美元;=,上下文→美元getSocket (ZMQ:: SOCKET_PUB);,,,,出版商→美元bind (tcp://*: 5555),,,,,睡眠,(1); ,,,出版商→美元send (“你好”),,,,,echo “已发送你好”;?在
,
,
三,客户代码
1,总共放了两个文件,客户中是可以直接运行的exe文件,mylog中是。net源码,用VS2010编辑的。打开客户端文件,只要点击mylog。exe就能打开小工具。
2, clrzmq.dll是。网中zmq的辅助dll文件,需要引入到源码中
3,在客户中做zmq的下标操作,接收并将数据打印出来。
<>之前,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(日志); ,,,,,,,,,,,,,,,,,,,},,,,,,,,,,,,,,,,,,,,,var poller =, new 轮询器(new List< ZmqSocket>, {, sub }),,,,,,,,,,,,,,,,,,,,, while (_recvgo) ,,,,,,,,,,,,,,,,,,,{,,,,,,,,,,,,,,,,,,,,,,,试一试 ,,,,,,,,,,,,,,,,,,,,,,,{ ,,,,,,,,,,,,,,,,,,,,,,,,,,,poller.Poll (); ,,,,,,,,,,,,,,,,,,,,,,,},,,,,,,,,,,,,,,,,,,,,,,,catch (Exception 交货) ,,,,,,,,,,,,,,,,,,,,,,,{ ,,,,,,,,,,,,,,,,,,,,,,,} ,,,,,,,,,,,,,,,,,,,} ,,,,,,,,,,,,,,,} ,,,,,,,,,,,} ,,,,,,,}
,
<强>在集成到实际项目中还会出现很多问题,我这里只是做个简单的演示展示一下。强>