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