用PHP實現定時器功能


1、直接使用PHP來完成定時

<?php
ignore_user_abort(false);//當用戶關閉頁面時服務停止
set_time_limit(0);  //設置執行時間,單位是秒。0表示不限制。
date_default_timezone_set('Asia/Shanghai');//設置時區

while(TRUE)
{
    //這里是需要定時執行的任務
    sleep($interval);//暫停時間(單位為秒)
}
?>

 2.Linux/Unix的定時任務 定時直接可以用cron來執行一個php腳本 或者其他語言的腳本[你要有足夠的系統權限]

比如每隔5分鍾執行下 /root/bin目錄下的test.php腳本

*/5 * * * * php /root/bin/test.php

 

<?php    
   ignore_user_abort(true);//設置與客戶機斷開是否會終止腳本的執行。
  set_time_limit(0); //設置腳本超時時間,為0時不受時間限制
  ob_end_clean();//清空緩存
  ob_start();//開始緩沖數據
  while(1){
   echo str_repeat(" ",1024);//寫滿IE有默認的1k buffer
   ob_flush();//將緩存中的數據壓入隊列
   flush();//輸出緩存隊列中的數據
   echo "now time is ".date('h:i:s') . "<br/>";//打印數據,其實是先將數據存入了緩存中
   usleep(1000000);//延遲一秒(暫停一秒)
  }
?>

如果要求實現連續、均勻的輸出效果(如輸出時間),則應設置緩存,即使用圖a對應的方法;如果對輸出顯示的連續性要求不高,或者時間間隔比較大(如定期自動備份,定時加密控制等),則使用圖b對應的方法即可。

   為方便理解,提供相關函數作用說明如下:
  ①ignore_user_abort(bool):設置與客戶機斷開是否會終止腳本的執行。
  ②set_time_limit(int seconds)設置允許腳本運行的時間,單位為秒。參數值為0時不受限制。
  ③ob_end_clean():清除服務端緩存的數據
  ④ob_start():開啟一個緩存(可嵌套)
   ⑤ob_flush():將緩存中的數據壓入隊列
  ⑥flush():輸出緩存隊列中的數據
  ⑦usleep(int m-seconds):以指定的微秒數延緩程序的執行。
  注:
  flush()和ob_flush()的正確順序應是,先ob_flush()再flush(),不可弄混。
  usleep()函數可替換成sleep()函數,不同之處在於sleep()的參數是秒。

FROM:http://blog.tianya.cn/blogger/post_read.asp?BlogID=4315093&PostID=42870088

          http://blog.uacool.com/?p=642

          http://dev.cobub.com/zh/docs/cobub-razor/auto-archiving/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM