Continuously updating php page

拈花ヽ惹草 提交于 2019-12-23 23:16:26

问题


I have created a php page to display a image from a set of five images. The image is displayed based on the data read from a text file.Another application is continuously updating data in that text file.So my php page need to read data from that file whenever the file is updated and display image based on that data. I created a infinite loop to read data. But when i tried to access the php page from a browser , it is not loading because of the infinite loop.

$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.
}

回答1:


In PHP Set header like this to refresh the php page

header("Refresh: 5;url='pagename.php'");

In HTML Head tag

<html>
    <head>
    <meta http-equiv="refresh" content="5;URL='pagename.php'">
    </head>
</html>
<?php 
Your php script here..
?>

Using 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';
}



回答2:


The most reasonable way to do it would be to use the client side to refresh the page.

Get rid of all that infinite loop stuff on the PHP side. PHP will only output the image as it stands at the moment it was generated.

On the client side you could do something as simple as: <META http-equiv="refresh" content="5;"> to force a refresh every 5 seconds.

If you only want to update when the file is updated you have to get more advanced. You could do an ajax call that checks if the file has changed and if so it refreshes. Websockets would be another option.

You could possibly do some nasty hack on the PHP side to make it work using ob_flush and sleep and header within a loop that checks to see if the file has changed but this will cause you to lose sleep once you realize what you've done. As pointed out below, this would never work.



来源:https://stackoverflow.com/questions/35618366/continuously-updating-php-page

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!