我创建了一个php页面来显示一组五个图像中的图像。基于从文本文件读取的数据显示图像。另一个应用程序不断更新该文本文件中的数据。因此,只要文件更新,我的php页面就需要从该文件中读取数据,并根据该数据显示图像。我创建了一个无限循环来读取数据。但是当我试图从浏览器访问php页面时,由于无限循环而没有加载。
$myfile1 = fopen("readfile.txt", "r") or die("Unable to open file!");
$readJsonData = fread($myfile1,filesize("readfile.txt"));
fclose($myfile1);
$obj = json_decode($readJsonData);
$urllogo = 'tatalogo.png';
if(($obj->{"FrontLeft"}) == "TRUE")
{
$url = 'images/FrontLeft.png';
}
else if(($obj->{"FrontRight"}) == "TRUE")
{
$url = 'images/FrontRight.png';
}
else if(($obj->{"RearLeft"}) == "TRUE")
{
$url = 'images/RearLeft.png';
}
else if(($obj->{"RearRight"}) == "TRUE")
{
$url = 'images/RearRight.png';
}
else
{
$url = 'images/Normal.png';
}
// infinite loop
while(1)
{
//reading from the file and refreshing the page.
}
答案 0 :(得分:1)
在PHP中设置这样的标题以刷新php页面
header("Refresh: 5;url='pagename.php'");
在HTML头标记
中<html>
<head>
<meta http-equiv="refresh" content="5;URL='pagename.php'">
</head>
</html>
<?php
Your php script here..
?>
使用Javascript
<script type="text/javascript>
window.setInterval(function(){
reload_page();
}, 5000);
//Here 5000 in miliseconds so for 5 seconds use 5000
function reload_page()
{
window.location = 'pagename.php';
}
答案 1 :(得分:0)
最合理的方法是使用客户端刷新页面。
摆脱PHP方面的所有无限循环内容。 PHP只会在生成图像时输出图像。
在客户端,你可以做一些简单的事情:
<META http-equiv="refresh" content="5;">
每5秒强制刷新一次。
如果您只想在文件更新时更新,则必须更高级。您可以执行ajax调用来检查文件是否已更改,如果已更改,则刷新。 Websockets是另一种选择。
你可能会在PHP端做一些讨厌的黑客攻击,使其在循环中使用如下所述,这将永远不会奏效。ob_flush
和sleep
以及header
工作,该循环检查文件是否包含一旦你意识到你已经完成了什么,这将导致你失眠。