使用 PHP 檢查產線資料發送 LINE Notify

上週開始嘗試 LINE Notify , 完成了:
1. 註冊 LINE Notify .
2. 透過 PHP 發送到 LINE Notify .
3. 使用 shell_exec 執行 ping 檢查主機是否可以連線, 若不能連線則發通知.

今天則多做了:
4. 檢查 ftp 主機上某些檔案是否存在, 若不存在則發通知.

所以稍微紀錄一下檢查主機連線跟 ftp 檔案的一些條件:

shell_exec 執行 ping :
因為要快速導入, 而且環境相對安全, 所以我是直接用 XAMPP 安裝, 基本上不再外掛其他擴充套件, 所以考慮到檢測主機是否連線時, 試了 3 種網路找到的 php 原生 ping 或產生 socket 封包的方式, 後來發現這些方式都要裝擴充套件或修改 *.ini 來啟用, 於是就改成使用 Windows 原生的 ping .
使用 Windows 原生的 ping 基本上只要透過 shell_exec 執行 ping , 但要把 ping 的結果丟回給 php 判斷, 我是透過字串檢查的方式, 直接查看回應有沒有"TTL="這字串.
另外則是用 ping -n 1 || ping -n 1 這樣的組合, 如果 ping -n 2 會等兩秒, 用 ping -n 1 || ping -n 1 只要連線成功, 1 秒就結束, 連線失敗才會試第二次.

檢查 ftp 上是否有特定檔案:
因為辦公室電腦不能直接連產線電腦, 所以都是透過資料主機回傳, 因此要定時檢查資料主機是否正常.
原本程式掛的電腦有透過網路磁碟機連線, 直接遠端登入執行 php 也可以順利檢查, 但寫進工作排程後, 不知道為什麼一直沒有連到網路磁碟, 剛好資料主機也有 ftp 功能, 所以改用檢查 ftp 上檔案是否存在.
但又發生一個狀況, "目錄有漢字", 試了一下, 直接 ftp_nlist($conn_id,"含漢字目錄") 會失敗, 如果 ch_dir($conn_id,"含漢字目錄") 再 ftp_nlist($conn_id,pwd($conn_id))就可以找到檔案, 可能卡在編碼問題, 不過稍微試一下 iconv 跟 utf8encode 的組合都無法直接 ftp_nlist , 就繼續用先切換目錄的方式.

接下來就規劃排程, 上班時間比較頻繁檢查, 非上班時間 2~3 小時再檢查, 然後暫停一下, 因為接下來要檢查檔案內容是否有正確撈到資料, 除了檔案是否存在還需要讀檔, 可能要存進陣列, 再進行統計, 步驟上大概要前面的 3~10 倍的規模.