php文件每隔幾秒執行一次

  說實話,linux 下面的crontab 任務徹底能夠實現全部的定時任務腳本,可是有些腳本只須要在一段時間內執行,過了這段時間以後,就再也不執行定時腳本了。在使用crontab的時候,就須要人爲的關閉掉這個腳本。php

  有沒有一種方式,利用PHP本身來執行定時腳本,並且我也能夠隨時在後臺關閉。html

一個簡單的死循環的例子linux

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

 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 內容以下:curl

<?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.htmlurl

相關文章
相關標籤/搜索