Показать сообщение отдельно
  #8 (permalink)  
Старый 14.02.2013, 03:05
Интересующийся
Отправить личное сообщение для Smip Посмотреть профиль Найти все сообщения от Smip
 
Регистрация: 23.01.2013
Сообщений: 19

Сделал так, незнаю насколько это корректно, но работает, обновляется каждые 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, спасибо что ткнул носом куда смотреть.
Ответить с цитированием