php文件每隔幾秒執行一次


  說實話,linux 下面的crontab 任務完全可以實現所有的定時任務腳本,但是有些腳本只需要在一段時間內執行,過了這段時間之后,就不再執行定時腳本了。在使用crontab的時候,就需要人為的關閉掉這個腳本。

  有沒有一種方式,利用PHP自己來執行定時腳本,而且我也可以隨時在后台關閉。

一個簡單的死循環的例子

sleep()函數;主要是讓死循環得到休息,不至於崩潰。 
set_time_limit(0);設置執行最長時間,0為無限制。 
ignore_user_abort(true); 關閉瀏覽器,服務器也能自動執行。

 1 <?php 
 2 ignore_user_abort();//關閉瀏覽器仍然執行
 3 set_time_limit(0);//讓程序一直執行下去
 4 $interval=3;//每隔一定時間運行
 5 do{
 6     $msg=date("Y-m-d H:i:s");
 7     file_put_contents("log.log",$msg,FILE_APPEND);//記錄日志
 8     sleep($interval);//等待時間,進行下一次操作。
 9 }while(true);
10 ?>

需要說明的是:程序沒有寫結束判斷語句,他會無限循環下去。當然如果想停止的話,可以重啟apache,重啟后就無效了。想再次進行定時執行,那么把這段代碼再一次運行。

上面簡單例子可以說明這個原理。
那么針對上面的例子,我可以進行一下改良方案。

你需要一個執行腳本的開關,你可以用外部文件引入的方法來實現,在while循環的時候,include開關變量即可。那么就可以這樣實現:
建立外部引入變量文件 switch.php 內容如下:

<?php
return 1;//1執行腳本 0退出執行腳本
?>

改良腳本如下:

 1 <?php
 2     ignore_user_abort();//關閉瀏覽器后,繼續執行php代碼
 3     set_time_limit(0);//程序執行時間無限制
 4     $sleep_time = 5;//多長時間執行一次
 5     $switch = include 'switch.php';
 6     while($switch){
 7         $switch = include 'switch.php';
 8         $msg=date("Y-m-d H:i:s").$switch;
 9             file_put_contents("log.log",$msg,FILE_APPEND);//記錄日志
10         sleep($sleep_time);//等待時間,進行下一次操作。
11     }
12     exit();
13  
14 ?>

通過這個,是不是可以刷完整的瀏覽量或者點贊數呢。有時刷網站的瀏覽量會有ip限制等,可以查看之前的curl的使用。http://www.cnblogs.com/xs-yqz/p/7645567.html

來自:http://www.blhere.com/966.html


免責聲明!

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



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