您好,登錄后才能下訂單哦!
以前Log都是打印在一個文檔中,然后打開文件夾,最后打開文檔查看里面的內容,每次打開文件夾感覺很煩。
前些日子看到同事開發.NET的時候,用他自己的一個小工具能夠時時查看到Log的內容,非常方便,所以就想移植到PHP開發中。
1、打開客戶端小工具mylog.exe,在地址中輸入localhost,端口輸入5555,點擊開始鏈接,旁邊屏幕會顯示“開始監聽”的字樣。
2、打開log.php頁面,頁面很樸素,就打印了一串字符。
3、查看mylog.exe,里面已接收到hello字符串
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展示一下。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。