最近開發短信任務和短信發送功能,用到了定時執行php這方面:和大家分享一下:
(個人筆記,寫的不好,海涵海涵,看不懂的話可以留言,但是我一般都能及時回復,其他網上有很多這樣的教程,大家一搜就滿地)
我用的是thinkphp開發的程序,程序已經開發好了,程序有個分批定時發送功能,每隔一段時間查找一下數據庫,然后把符合條件的短信任務給發送出去,
實現思路如下:
通過win的“任務”功能來定時執行一個bat文件,bat文件會調用php.exe文件,php.exe可以傳遞參數 指定執行哪個類和方法
方法如下:
一,thinkphp開啟cli支持
1、tp正好支持cli命令模式,手冊的路徑為13.7.4
如果是用的其他框架不支持cli,那么只能直接寫程序了,其實就是寫面向過程的最基礎的php代碼。
2、在入口文件下開啟命令,加入一句
define('MODE_NAME', 'cli');
網站一般還有可以通過網頁訪問的模塊,所以可以新建立一個cli的入口如index_cli.php,這樣其他的模塊還可以通過正常的入口進入。有的手冊上寫的開始cli定義的是define(' THINK_MODE ', 'cli'); ,可能是版本不同,注意這點。
二、新建立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文件,運行后查看該文件就知道報錯與否或報哪些錯誤)
三、新建任務
win下是 控制面板——》管理程序——》任務計划程序
右擊 任務計划程序庫 -》新建任務
運行的賬戶一定要有權限
觸發器-》新建 選擇頻率次數等功能
操作-》新建 選 啟動程序 在下面找到自己寫的bat文件
其他的可以自己看看
建立任務后,點程序運行一下,看看運行的時間和結果還有自己程序所做的事做了沒有,
有錯的話注意的是包含
所選用戶權限、各個路徑是否正確、程序是否正確
所以一般做是首先,保證通過url地址訪問程序運行ok,然后,是單擊bat文件程序運行ok,再然后是任務計划運行ok
參考地址:
thinkphp 定時執行php文件 php自動執行php文件
http://blog.sina.com.cn/s/blog_4acbd39c01011sme.html