crontab wget命令定時執行thinkphp的控制器實現定時任務

背景:項目裏需要配置個定時任務掃描訂單數據表裏的數據,將快要到期的訂單標記出來,寫到系統消息提醒表裏。以前配置過crontab直接執行php腳本,然後一路全面向過程的方式將業務實現到底。最近項目用了thinkphp框架,想着框架對於數據操作封裝的便利,就不想再單獨下php腳本文件運行了。但是,在項目裏寫的controller控制器文件,配置到crontab裏new之後調用對應方法完全沒效果。折騰了一些時間,發現沒弄好後,就果斷放棄了,想到linux的命令wget。於是開始配置wget,將地址設爲要執行的controller對應的地址,最終這種方式是可以的。但是,必須記得的是任務運行的controller最好繼承一個基類,然後在基類的thinkphp初始函數_initialize裏寫上驗證部分,這樣可以儘量避免外部訪問(可以驗證訪問ip是不是本機或者訪問地址裏帶上username和pwd之類的)。

以上屬於業務的說明,下面直接上代碼

01 * * * * root wget -t 1 -T 0 -q --spider "http://localhost/tptest/index.php?c=timetask&a=get_sys_warm&visit_name=123456&visit_pwd=123456"
其中用到了wget命令幾個參數:

-t : 連接次數(失敗後重連)

-T: 連接時間設置(0不會超時)

-q: 安靜模式 (不輸出訊息)

--spider: 不下載任何資料

備註:有點問題的是這種屬於web形式,雖然在訪問的控制器裏有ip和祕鑰驗證,但不確定會不會有什麼安全隱患。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章