我們使用Thinkphp框架在日常使用中難免會(huì)碰到一些需要在后臺(tái)自動(dòng)執(zhí)行的項(xiàng)目,如定時(shí)掃描等。雖然php提供了一些函數(shù)可以用代碼實(shí)現(xiàn),即使關(guān)閉瀏覽器也不會(huì)中斷如:
ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
ini_set('memory_limit','512M'); // 設(shè)置內(nèi)存限制
$interval=60*30;// 每隔半小時(shí)運(yùn)行
do{
//ToDo
sleep($interval);// 等待5分鐘
}
while(true);
但是這種方法有一種致命的缺陷,就是無法控制,除非你結(jié)束php進(jìn)程,內(nèi)存消耗也很大,難以在實(shí)踐中使用
想要在性能和管理上更為合理,使用服務(wù)器提定時(shí)執(zhí)行更為方便,拿windows為便,如果我們直接使用F:\index.php Home/index 會(huì)發(fā)現(xiàn)無法執(zhí)行。因?yàn)榻^對(duì)路徑無法調(diào)用thinkphp所以tp提供了使一種模式Cli模式。使用這種模式也非常簡(jiǎn)單方便:
首先復(fù)制一份index.php 更名為cli.php放在根目錄。然后增加一行代碼
define('APP_MODE','cli');
設(shè)置為cli模式
再到ThinkPhp/Model/Sae目錄下復(fù)制一份api.php 更名為cli.php
這樣cli模式就配置完成了。我們可以用win自帶的定時(shí)執(zhí)行測(cè)試一下。
我們寫一個(gè).bat
先找到php執(zhí)行文件的路徑 在bat文件里寫上執(zhí)行代碼如:
E:\php.exe F:\cli.php Home/Index/index
前一段為php服務(wù)的路徑,后一段為tp項(xiàng)目的執(zhí)行路徑。執(zhí)行模塊HOME下 控制index控制器下的index操作。自行成功為自行關(guān)閉,如果失敗會(huì)顯示 錯(cuò)誤代碼。
如果要執(zhí)行多次任務(wù),復(fù)制一行即可
成功后可以把代碼在定時(shí)任務(wù)里配置好,設(shè)置好定時(shí)時(shí)間,定時(shí)任務(wù)就配置完成了
ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
ini_set('memory_limit','512M'); // 設(shè)置內(nèi)存限制
$interval=60*30;// 每隔半小時(shí)運(yùn)行
do{
//ToDo
sleep($interval);// 等待5分鐘
}
while(true);
但是這種方法有一種致命的缺陷,就是無法控制,除非你結(jié)束php進(jìn)程,內(nèi)存消耗也很大,難以在實(shí)踐中使用
想要在性能和管理上更為合理,使用服務(wù)器提定時(shí)執(zhí)行更為方便,拿windows為便,如果我們直接使用F:\index.php Home/index 會(huì)發(fā)現(xiàn)無法執(zhí)行。因?yàn)榻^對(duì)路徑無法調(diào)用thinkphp所以tp提供了使一種模式Cli模式。使用這種模式也非常簡(jiǎn)單方便:
首先復(fù)制一份index.php 更名為cli.php放在根目錄。然后增加一行代碼
define('APP_MODE','cli');
設(shè)置為cli模式
再到ThinkPhp/Model/Sae目錄下復(fù)制一份api.php 更名為cli.php
這樣cli模式就配置完成了。我們可以用win自帶的定時(shí)執(zhí)行測(cè)試一下。
我們寫一個(gè).bat
先找到php執(zhí)行文件的路徑 在bat文件里寫上執(zhí)行代碼如:
E:\php.exe F:\cli.php Home/Index/index
前一段為php服務(wù)的路徑,后一段為tp項(xiàng)目的執(zhí)行路徑。執(zhí)行模塊HOME下 控制index控制器下的index操作。自行成功為自行關(guān)閉,如果失敗會(huì)顯示 錯(cuò)誤代碼。
如果要執(zhí)行多次任務(wù),復(fù)制一行即可
成功后可以把代碼在定時(shí)任務(wù)里配置好,設(shè)置好定時(shí)時(shí)間,定時(shí)任務(wù)就配置完成了