I have some simple text file. I am trying to read that file contents using PHP and update it to the user. I was setting up the ajax request for every 2 seconds but the problem is the file won’t be updated for every 2 seconds may be 15 or 30 or 1 minute long.
So I thought of doing this: check the last modified time of file and if it is different then only update it to the user but here where I am stuck.
JavaScript functions:
function read()
{
read_text();
t=setTimeout("read()",200);
}
function read_text()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('read').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","demo.php",true);
xmlhttp.send();
}
My PHP file:
<?php
$a = fileattime("filenam");
$b = fileattime("filenam");
if($b > $a )
{
echo "update contents";
$a = $ b;
}
?>
I thought to store the last modified time of file in $a variable and compare the value with $b variable but here $a will be overwritten with the new value for every ajax request. I want $a to be assigned a value only once, I mean for the first ajax request then later on compare it with $b value and if $b is greater than $a then update the contents to user then fill up $a with $b.
What can I try next?
Try creating a session, and storing the information in a session variable.
https://www.php.net/manual/en/reserved.variables.session.php
If you do that, you’ll have a persistent value that you can use to test against to see the last modified / updated value.
Be sure to do session_start() at the beginning of the script.
You can have it look something like this..
JS:
PHP: