PHP set_time_limit(0)長連接的實(shí)現(xiàn)分析
更新時(shí)間:2010年03月02日 13:28:17 作者:
每次我們?cè)L問PHP腳本的時(shí)候,都是當(dāng)所有的PHP腳本執(zhí)行完成后,我們才得到返回結(jié)果。如果我們需要一個(gè)腳本持續(xù)的運(yùn)行,那么我們就要通過php長連接的方式,來達(dá)到運(yùn)行目的。
每個(gè)PHP腳本都限制了執(zhí)行時(shí)間,所以我們需要通過 set_time_limit 來設(shè)置一個(gè)腳本的執(zhí)行時(shí)間為無限長;然后使用 flush() 和 ob_flush() 來清除服務(wù)器緩沖區(qū),隨時(shí)輸出腳本的返回值。
如下面這段腳本:
<?php
header("Content-Type: text/plain");
set_time_limit(0);
$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}
?>
當(dāng)我們執(zhí)行后,每隔5秒鐘,我們會(huì)得到一行 Hello World ,如果不按停止按鈕,瀏覽器會(huì)不停的一行一行繼續(xù)加載。
通過這一方法,我們可以完成很多功能,例如機(jī)器人爬蟲、即時(shí)留言板等程序。
如下面這段腳本:
復(fù)制代碼 代碼如下:
<?php
header("Content-Type: text/plain");
set_time_limit(0);
$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}
?>
當(dāng)我們執(zhí)行后,每隔5秒鐘,我們會(huì)得到一行 Hello World ,如果不按停止按鈕,瀏覽器會(huì)不停的一行一行繼續(xù)加載。
通過這一方法,我們可以完成很多功能,例如機(jī)器人爬蟲、即時(shí)留言板等程序。
相關(guān)文章
PHP與Perl之間知識(shí)點(diǎn)區(qū)別整理
在本篇文章里小編給大家分享了關(guān)于PHP與Perl的卻別以及相關(guān)知識(shí)點(diǎn)整理,有興趣的朋友們學(xué)習(xí)下。2019-03-03php更新mysql后獲取影響的行數(shù)發(fā)生異常解決方法
mysql_affected_rows函數(shù)當(dāng)UPDATE前后的數(shù)據(jù)一樣時(shí)會(huì)返回異常值,接下來為大家介紹個(gè)簡單的解決方法感興趣的朋友可以參考下哈2013-03-03php下載文件超時(shí)時(shí)間的設(shè)置方法
這篇文章W主要介紹了php下載文件超時(shí)時(shí)間的設(shè)置方法2016-10-10mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的區(qū)別
一直以來,有很多初學(xué)者搞不懂這些Mysql中從查詢結(jié)果集中取得數(shù)據(jù)的函數(shù)之間有什么區(qū)別,今天我就來秀一把,在秀之前先給大家一段PHP實(shí)例2009-04-04