PHP不支持多線程,有時候處理問題不是那麼爽,今天談論一下PHP定時執行的方法


PHP定時執行的三種方式實現

    一、windows 的計劃任務    
    二、linux的腳本程序      
    三、讓web瀏覽器定時刷新php

     

具體實現

windows計劃任務

PHP不多在win服務器上跑,具體實現也再也不深究,看網上實現的原理大概是寫bat腳本,而後讓window任務添加執行這個bat腳本,具體能夠參考:http://www.cnblogs.com/whoknows/articles/2228577.htmlhtml

linux 的腳本實現

這裏主要使用到crontab這個命令,linux

使用方式 :web

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }shell

說明 :windows

crontab 是用來讓使用者在固定時間或固定間隔執行程式之用centos

使用crontab寫shell腳本,而後讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性瀏覽器

能夠參看:http://www.centos.bz/2011/07/php-cron-job-linux-crontab/服務器

PHP實現定時執行計劃任務

     

    php

使用php讓瀏覽器刷新須要解決幾個問題

  1. PHP腳本執行時間限制,默認的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設置max_execution_time時間(不推薦)
  2. 若是客戶端瀏覽器關閉,程序可能就被迫終止,解決辦法:ignore_user_abort即便關閉頁面依然正常執行
  3. 若是程序一直執行頗有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,而後在執行

PHP定時執行的代碼:curl

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
ignore_user_abort(); //關掉瀏覽器,PHP腳本也能夠繼續執行.
set_time_limit(3000); // 經過set_time_limit(0)能夠讓程序無限制的執行下去
$interval =5; // 每隔5s運行
 
//方法1--死循環
do {
     echo '測試' .time(). '<br/>' ;
     sleep( $interval ); // 等待5s   
} while (true);
 
//方法2---sleep 定時執行
     require_once './curlClass.php' ; //引入文件
     
     $curl = new httpCurl(); //實例化
     $stime = $curl ->getmicrotime();
     for ( $i =0; $i <=10; $i ++){
         
         echo '測試' .time(). '<br/>' ;
         sleep( $interval ); // 等待5s
         
     }
     ob_flush();
     flush ();
     $etime = $curl ->getmicrotime();
     echo '<hr>' ;
     echo round (( $etime -stime),4); //程序執行時間
?
1
相關文章
相關標籤/搜索