Сделал так, незнаю насколько это корректно, но работает, обновляется каждые 30 секунд, может кому-то пригодится. Основной файл:
$mtime = filemtime("file.txt");
echo "<script>var timer = setInterval(function() { checkchanges($mtime); }, 30000);</script>";
<script type="text/javascript">
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function checkchanges($mtime){
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', '/test.php?r='+Math.random()+"&f=file.txt", true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
if($mtime != xmlhttp.responseText) {
alert("Файл обновился, пожалуйста, перезагрузите страницу!");
clearInterval(timer);
}
}
}
};
xmlhttp.send(null);
}
</script>
И файл test.php:
<?php
$file = $_GET['f'];
clearstatcache();
echo (filemtime($file));
?>
danik.js, спасибо что ткнул носом куда смотреть.