php定時執行任務實現方法詳解

2021-07-24 13:04:52 字數 2714 閱讀 8049

每個php指令碼都限制了執行時間,所以我們需要通過 set_time_limit 來設定乙個指令碼的執行時間為無限長;然後使用 flush() 和 ob_flush() 來清除伺服器緩衝區,隨時輸出指令碼的返回值。 當我們執行後,每隔5秒鐘,我們會得到一行 hello world

header("content-type: text/plain");

set_time_limit(0);

$infostring = "hello world" . "n";

while( isset($infostring) )

<?php 

ignore_user_abort(); // 即使client斷開(如關掉瀏覽器),php指令碼也可以繼續執行.

set_time_limit(0); // 執行時間為無限制,php預設的執行時間是30秒,通過set_time_limit(0)可以讓程式無限制的執行下去

$interval=20; // 時間間隔 單位 秒

$key_file="key.txt"; // 配置檔案

if (isset($_get['s']))

elseif ($_get['s']=="1")

elseif ($_get['s']=="2")

else

die("err 0:stop working 1:working 2:exit");

$string = "<?phpn return "".$s."";n?>";

write_inc($key_file,$string,true);

exit();

} if(file_exists($key_file))

elseif ($mkey=="die")

sleep($interval); // 等待$interval分鐘

}while(true);

} else

die($key_file." doesn't exist !");

function write_inc($path,$strings,$type=false)

?>

個人覺得在php定時執行任務還是有點複雜並且不好使用,下面我來介紹在作業系統中計畫任務來實現。

在網上找了些windows執行php的計畫任務的方法,有乙個寫得很全,可惜在我這竟然沒通過。最後不得不綜合各門派的方法,才能在我這執行成功。

1、寫乙個php程式,命名為test.php,內容如下所示:

<?

$fp = fopen("test.txt", "a+");

fwrite($fp, date("y-m-d h:i:s") . " 成功成功了!n");

fclose($fp);

?>

程式大膽地寫,什麼includerequire儘管用,都沒問題

2、新建bat檔案,命名為test.bat,內容如下所示:

d:phpphp.exe -q d:websitetest.php

//相應目錄自己改上

3、建立windows計畫任務:

開始–>控制面板–>任務計畫–>新增任務計畫

瀏覽資料夾選擇上面的bat檔案

設定時間和密碼(登陸windows的)

儲存即可了。

4、over! 可以右鍵計畫任務點「執行」試試

linux系統中

我們可以借助linux的crontab工具來穩定可靠地觸發php執行任務。

下面介紹crontab的兩種方法。

一、在crontab中使用php執行指令碼

就像在crontab中呼叫普通的shell指令碼一樣(具體crontab用法),使用php程式來呼叫php指令碼。

每一小時執行myscript.php如下:

# crontab -e

2.00 * * * * /usr/local/bin/php /home/john/myscript.php

/usr/local/bin/php

為php程式的路徑。

二、在crontab中使用url執行指令碼

如果你的php指令碼可以通過url觸發,你可以使用lynx或curl或wget來配置你的crontab。

下面的例子是使用lynx文字瀏覽器訪問url來每小時執行php指令碼。lynx文字瀏覽器預設使用對話方式開啟url。但是,像下面的,我們在lynx命令列中使用-dump選項來把url的輸出轉換來標準輸出。

1.00 * * * * lynx -dump /myscript.php
下面的例子是使用curl訪問url來每5分執行php指令碼。curl預設在標準輸出顯示輸出。使用"curl -o"選項,你也可以把指令碼的輸出轉儲到臨時檔案。

1.*/5 * * * * /usr/bin/curl -o temp.txt /myscript.php
下面的例子是使用wget訪問url來每10分執行php指令碼。-q選項表示安靜模式。"-o temp.txt"表示輸出會傳送到臨時檔案。

1.*/10 * * * * /usr/bin/wget -q -o temp.txt /myscript.php

PHP定時執行任務實現方法詳解(Timer)

下面通過理論講解,例項分析,效果展示的方式給大家分享下php定時執行任務實現方法。定時器任務,在web應用比較常見,如何使用php實現定時器任務,大致有兩種方案 1 使用crontab命令,寫乙個shell指令碼,在指令碼中呼叫php檔案,然後定期執行該指令碼 2 配合使用ignore user a...

PHP實現定時執行任務的方法

這篇文章主要介紹了php實現定時執行任務的方法,涉及到ignore user abort函式忽略指令碼終止的使用及sleep函式延緩執行等的應用,需要的朋友可以參考下 ignore user abort true 客戶端斷開時忽略指令碼中止 允許指令碼一直執行 set time limit 0 設定...

php定時執行任務設定詳解

url 複製 url 如下 d cd php php.exe d wwwroot dingshi.php 定時執行的指令碼檔案的路徑我們可以測試一下dingshi.php url 複製 url 如下 file put contents a.php test 我們雙擊一下test.bat,然後看下a....