詳解PHP實現(xiàn)執(zhí)行定時任務(wù)
PHP在這方面應(yīng)該說是比較弱,如果只用php去實現(xiàn)可以如下:
<?php
ignore_user_abort();//關(guān)閉瀏覽器后,繼續(xù)執(zhí)行php代碼
set_time_limit(0);//程序執(zhí)行時間無限制
$sleep_time = 1;//多長時間執(zhí)行一次
do{
$fp = fopen('test.txt','a+');
fwrite($fp,"這是一個php博客:phpddt.com \n");
fclose($fp);
sleep($sleep_time);
}while(true);
?>
但是當(dāng)我執(zhí)行腳本的時候,即使我關(guān)閉了瀏覽器,我根本就沒法去停止這段程序了,所以你需要一個執(zhí)行腳本的開關(guān),你可以用外部文件引入的方法來實現(xiàn),在while循環(huán)的時候,include開關(guān)變量即可。那么就可以這樣實現(xiàn):
建立外部引入變量文件 switch.php 內(nèi)容如下:
<?php return 1;//1執(zhí)行腳本 0退出執(zhí)行腳本 ?>
改良腳本如下:
<?php
ignore_user_abort();//關(guān)閉瀏覽器后,繼續(xù)執(zhí)行php代碼
set_time_limit(0);//程序執(zhí)行時間無限制
$sleep_time = 5;//多長時間執(zhí)行一次
$switch = include 'switch.php';
while($switch){
$switch = include 'switch.php';
$fp = fopen('test.txt','a+');
fwrite($fp,"這是一個php博客:phpddt.com $switch \n");
fclose($fp);
sleep($sleep_time);
}
exit();
?>
這個腳本只是測試可行,具體效率應(yīng)該不高,對于lamp,你完全可以使用crontab 來實現(xiàn)。
再補充一段小代碼:
ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
$interval=60*30;// 每隔半小時運行
do{
//這里是你要執(zhí)行的代碼
sleep($interval);// 等待5分鐘
}while(true);
關(guān)于PHP定時執(zhí)行任務(wù)的實現(xiàn)就為大家介紹這么多,之后還有相關(guān)文章為大家分享,不要錯過。
相關(guān)文章
php中通過DirectoryIterator刪除整個目錄的方法
這篇文章主要介紹了php中通過DirectoryIterator刪除整個目錄的方法,實例分析了php通過DirectoryIterator類操作目錄的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
php中使用in_array() foreach array_search() 查找數(shù)組是否包含時的性能對比
這篇文章主要介紹了php中使用in_array() foreach array_search() 查找數(shù)組是否包含時的性能對比,需要的朋友可以參考下2015-04-04

