随笔- 443  文章- 77  评论- 996  阅读- 105万 

以前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

 posted on   咖啡机(K.F.J)  阅读(1229)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示