近期,總經辦郵件反饋考勤數據頻繁丟失,請IT排查其根本緣由,並提供整改措施。html
措不及防,這個項目當初並非IT主導的,是設備部採購,而後協同軟件供應商直接安裝、部署和調試的,IT只是提供幾個數據庫表接口給供應商。而後咱們就開始在設備、總經辦、供應商之間相互扯皮,之因此扯皮的緣由是,通過供應商排查並無發現任何問題(具體狀況不得而知),也就是說他們也不知道形成數據丟失的具體緣由。數據庫
求人不如求己,後來咱們這邊排查數據庫日誌,發如今數據丟失的時間段內,數據庫和上位機之間不多或者說基本沒有數據交互。繼續排查設備上位機日誌,發現其網絡端口會有間歇性響應異常等問題,重啓端口後一切正常。網絡
知道這些之後,那接下來問題就簡單了。佈局
客製化一個系統/腳本,實現定時檢測某個網絡端口相關功能是否正常,經過其DLL接口實現端口刷新或重啓,並將日誌經過郵件方式發送給指定人員。post
下面給出幾個關鍵模塊Demo測試
網絡端口檢測模塊(須要引用IdIcmpClient單元)url
1 var 2 icmp: TIdIcmpClient; 3 rpss: TReplyStatus; 4 begin 5 icmp := TIdIcmpClient.Create(nil); 6 try 7 icmp.Host := strIP; 8 icmp.ReceiveTimeout := intLinkTimeOut; 9 try 10 icmp.Ping; 11 rpss := icmp.ReplyStatus; 12 Result := not (rpss.ReplyStatusType = rsTimeOut); 13 except 14 Result := False; 15 end; 16 finally 17 icmp.Free; 18 end; 19 end;
Dll接口模塊spa
關於Dll接口其實沒什麼可說的,不一樣的接口使用方法不同,這裏給出通用的Dll接口重寫和調用的例子調試
關於Delphi Dll接口重寫:Delphi - 建立SuperDll 持續更新日誌
關於Delphi Dll接口調用:Delphi - 調用SuperDll 持續更新
郵件發送模塊
參考我之前寫過的:Delphi - Indy TIdMessage和TIdSMTP實現郵件的發送
定時模塊
採用Timer控件,經過前臺設置執行間隔、Enable屬性,來控制對關鍵事件的定時執行效果
頁面佈局
運行效果
做者:Jeremy.Wu
出處:https://www.cnblogs.com/jeremywucnblog/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。