我試圖從讀卡器捕獲實時饋送並使用PHP打印它。瀏覽器結束PHP無限循環,然後打印數據
<?php
$i=0;
for(;;)
{
$subdata=file_get_contents("/home/openflow/subscribedata.txt");
$subdata2=file_get_contents("/home/openflow/subscribedatatemp.txt");
if($subdata!=$subdata2)
{
copy("/home/openflow/subscribedatatemp.txt","/home/openflow/subscribedata.txt");
$sub=file_get_contents("/home/openflow/subscribedata.txt");
$i++;
echo "\n". $i."--".$sub;
}
}
?>
我使用for循環作爲無限循環。每當有新的數據,我的卡讀寫器的腳本將其寫入subscribedatatemp.txt文件和subscribedatatemp.txt(最新的條目)和subscribedata.txt之間的差異上面的腳本檢查(以前的條目) 。如果有差異,它應該將最新版本複製到前一版本並回顯最新數據。
問題是當我執行上面的PHP代碼時,它不會顯示任何內容,並且在某段時間瀏覽器停止加載並顯示加載時獲得的所有數據。
這表示循環執行正在停止,並且在while循環結束後打印所有數據,對嗎?我該如何解決這個問題?
你的腳本可能是超時,嘗試添加'set_time_limit(0)'到頂部 – doublesharp
我應該在那裏添加?我是新來的PHP,我不知道在哪裏添加該行。你能告訴我在哪裏添加它嗎? –
'<?php set_time_limit(0)...?>'。此外,您應該儘量避免運行「緊密」的循環,這些循環不會讓其他進程有機會獲得一些CPU時間。在for循環結束之前引入'sleep(50)'或'sleep(100)'。 –