之前是用 PHP (Windows) 撈產線資料, 分析後發 LINE Notify .
最近加了一個新參數的分析, 那參數放在 MS SQL Server (A) ,
抓了 PHP SqlSrv ext (dll 格式) , 但執行時還需要 ODBC ,
可是放 PHP 的這台電腦(B)不是我管的, 不過還好這台也有 MS SQL ,
裡面有提供 SQLCMD 純文字介面.
於是就改成 PHP -> Shell -> 呼叫 SQLCMD -> 執行初步分析 -> 傳回 PHP -> 把分析結果的文字處理 -> 若有些關鍵文字, 表示環境變化太大 -> PHP 呼叫 LINE Notify .
架構差不多之後, 發現另一個情況, 持續撈取資料的資料量很大,
所以優先執行的 SQL 是篩選最近 10 分鐘的資料,
但加上初步分析的條件後, SQL 會把"最近 10 分鐘"跟"初步分析條件",
對相關的"全資料表"都比對一次而非常久, 所以有兩個改善方式:
1. 使用 MS SQL 的 #temp 資料表, 先將篩選 10 分鐘的資料丟進 #temp , 再對 #temp 分析.
2. MS SQL 直接篩選 10 分鐘的資料, 傳文字結果回 PHP , PHP 再處理文字部分.
之前已經處理不少 csv 資料來源, 有寫一些 function 了, 因此先選方法 2 .
https://www.linkedin.com/pulse/sqlcmd-%25E8%2590%258A%25E5%25A7%2586-%25E5%258F%25B2