PHP里有個(gè)函數(shù)很有用。這是在最近的開發(fā)中才逐漸用到的。
int ignore_user_abort ( [bool setting] )
這個(gè)函數(shù)的作用是指示服務(wù)器端在遠(yuǎn)程客戶端關(guān)閉連接后是否繼續(xù)執(zhí)行下面的腳本。
setting 參數(shù)是一個(gè)可選參數(shù)。如設(shè)置為True,則表示如果用戶停止腳本運(yùn)行,仍然不影響腳本的運(yùn)行(即:腳本將持續(xù)執(zhí)行);如果設(shè)置為False,則表示當(dāng)用戶停止運(yùn)行腳本程序時(shí),腳本程序?qū)⑼V惯\(yùn)行。
下面這個(gè)例子,在用戶關(guān)閉瀏覽器后,該腳本仍然后在服務(wù)器上繼續(xù)執(zhí)行:
<?php
ignore_user_abort(); // 后臺(tái)運(yùn)行
set_time_limit(0); // 取消腳本運(yùn)行時(shí)間的超時(shí)上限
do{
sleep(60); // 休眠1分鐘
}while(true);
?>
除非在服務(wù)器上關(guān)閉這個(gè)程序,否則這斷代碼將永遠(yuǎn)執(zhí)行下去。
-------------------------------------------------------------------------
<?php
ignore_user_abort(); // 后臺(tái)運(yùn)行
set_time_limit(0); // 取消腳本運(yùn)行時(shí)間的超時(shí)上限
echo 'start.<br/>';
while(!file_exists('close.txt')){
$fp = fopen('test.txt','a+');
fwrite($fp,date("Y-m-d H:i:s") . " 成功了!\r\n");
fclose($fp);
sleep(10);
}
echo 'end.<br/>';
?>