PHP ignore_user_abort 與 connection_status 與 register_shutdown_function 使用方法
用ignore_user_abort()實現PHP計劃任務
語法: int ignore_user_abort(int [setting]);
返回值: 整數
函數種類: PHP 系統功能
內容說明
0 - NORMAL(正常)1 - ABORTED(異常退出)2 - TIMEOUT(超時)
本函數配置或取得使用端連接中斷後,PHP 程序是否仍繼續執行。默認值為中斷連接後就停止執行。
在 PHP 配置文件中 (php3.ini/php.ini) 的 ignore_user_abort 選項就是配置處。本功能在 PHP 3.0.7 版之後才開始提供。
ignore_user_abort,這個函數可以幫助我們實現像linux中的cron一樣實現計劃任務,用戶關掉浏覽器後還可以執行。
首先修改你的php.ini,將“; ignore_user_abort = On”的注釋去掉,重啟一下Apache或IIS。
運用sleep(300)+死循環, 這樣就可以實現計劃任務了, 這個程序裡不要有輸出, 有輸出容易中斷。
缺點: 要停止程序必得重啟服務器,占內存大!!
<?php
ignore_user_abort(true);
set_time_limit(0);
while(1){
$fp = fopen(time_task.txt,"a+");
$str = date("Y-m-d h:i:s")."n";
fwrite($fp,$str);
fclose($fp);
sleep(1800); //半小時執行一次
}
?>
PHP代碼
<?php
ignore_user_abort(true); // 啟用函數
set_time_limit(0); // 無限次數執行腳本
$interval=60*2; // 每兩分鐘執行一次
do{
// 執行的內容開始
file_get_contents("http://www.liujingze.com/"); // 需要執行的過程
// 執行的內容結束
sleep($interval); // 按設置的間隔時間執行
}while(true);
?>
PHP計劃任務實例代碼
<?
ignore_user_abort();
set_time_limit(0);
$interval_second = 15;
do{
@$fp = fopen("leapsoulcn.txt","a");
if(!$fp)
{
echo "system error";
exit();
}
else
{
$fileData = "domain"." "."www.leapsoul.cn"."
";
$fileData = $fileData."description"." "."PHP網站開發教程網,面向PHP初學者的PHP教程網。"."
";
$fileData = $fileData."title"." "."本教程主要講述使用ignore_user_abort函數實現PHP計劃任務功能。";
fwrite($fp, $fileData);
fclose($fp);
}
sleep($interval_second);
}while(true);
?>
connection_status
取得連接狀態。
語法: int connection_status(void);
返回值: 整數
函數種類: 網絡系統
內容說明
本函數可返回連接狀態。使用時不須輸入參數
register_shutdown_function
定義 PHP 程序執行完成後執行的函數。
語法: int register_shutdown_function(string func);
返回值: 整數
函數種類: PHP 系統功能
內容說明
本函數向系統定義 PHP 程序 (Script) 執行結束之後所要執行的函數。當執行該指定的函數時,由於無法看到返回值,因此調試較困難。