最近開發短信任務和短信發送功能,用到了定時執行php這方面:和你們分享一下:
(我的筆記,寫的很差,海涵海涵,看不懂的話能夠留言,可是我通常都能及時回覆,其餘網上有不少這樣的教程,你們一搜就滿地)
我用的是thinkphp開發的程序,程序已經開發好了,程序有個分批定時發送功能,每隔一段時間查找一下數據庫,而後把符合條件的短信任務給發送出去,
實現思路以下:
經過win的「任務」功能來定時執行一個bat文件,bat文件會調用php.exe文件,php.exe能夠傳遞參數 指定執行哪一個類和方法
方法以下:
一,thinkphp開啓cli支持
一、tp正好支持cli命令模式,手冊的路徑爲13.7.4
若是是用的其餘框架不支持cli,那麼只能直接寫程序了,其實就是寫面向過程的最基礎的php代碼。
二、在入口文件下開啓命令,加入一句
define('MODE_NAME', 'cli');
網站通常還有能夠經過網頁訪問的模塊,因此能夠新創建一個cli的入口如index_cli.php,這樣其餘的模塊還能夠經過正常的入口進入。有的手冊上寫的開始cli定義的是define(' THINK_MODE ', 'cli'); ,多是版本不一樣,注意這點。
2、新創建bat文件
新創建一個txt文件,裏面寫上以下三行內容:
d:
cd D:\workspace\dzx2
php.exe D:\workspace\dzx2\index_cli.php Sms/sendjob>c:\smslog.txt
意思以此是:當前目錄移動到d盤,當前目錄移動到D:\workspace\dzx2文件夾下(個人項目入口文件),經過絕對路徑的php.exe 空格輸入絕對的項目cli入口文件,後面空格+參數(我已經把php.exe添加到了系統的環境變量的path變量中,因此只寫了php.exe)
簡單就是:當前目錄移動到項目入口文件,絕對路徑的php.exe+絕對路徑的項目入口文件+參數
吧txt文件改成bat後綴的可執行文件,單擊測試是否把執行了方法
(能夠在bat文件最後寫個Pause,來看看是否報錯,或直接寫入「 >c:\smslog.txt 」吧輸出的內容導入到一個txt文件,運行後查看該文件就知道報錯與否或報哪些錯誤)
3、新建任務
win下是 控制面板——》管理程序——》任務計劃程序
右擊 任務計劃程序庫 -》新建任務
運行的帳戶必定要有權限
觸發器-》新建 選擇頻率次數等功能
操做-》新建 選 啓動程序 在下面找到本身寫的bat文件
其餘的能夠本身看看
創建任務後,點程序運行一下,看看運行的時間和結果還有本身程序所作的事作了沒有,
有錯的話注意的是包含
所選用戶權限、各個路徑是否正確、程序是否正確
因此通常作是首先,保證經過url地址訪問程序運行ok,而後,是單擊bat文件程序運行ok,再而後是任務計劃運行ok