不断更新php页面

时间:2016-02-25 04:30:27

标签: php file refresh

我创建了一个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.
}

2 个答案:

答案 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_flushsleep以及header工作,该循环检查文件是否包含一旦你意识到你已经完成了什么,这将导致你失眠。如下所述,这将永远不会奏效。