Мониторинг изменений файлов через AJAX, как? - PullRequest
2 голосов
/ 11 августа 2011

Я ищу способ через AJAX (не через JS framework!) Отслеживать в реальном времени файл на предмет изменений.Если в этот файл были внесены изменения, мне нужно, чтобы он выдал предупреждающее сообщение.Я полный AJAX нуб, поэтому, пожалуйста, будьте нежны.; -)

Редактировать: позвольте мне объяснить цель более подробно.Я использую скрипт чата, который я написал на PHP для веб-магазина, и я хочу, чтобы модуль администратора отслеживал запросы чата.Чаты хранятся в текстовых файлах, и если кто-то начинает сеанс чата, создается новый файл.Если это так, в административном модуле я хочу видеть это в режиме реального времени.

Имеет смысл?

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

Чтобы отслеживать файл на наличие изменений с помощью AJAX, вы могли бы сделать что-то вроде этого.

var previous = "";

setInterval(function() {
    var ajax = new XMLHttpRequest();
    ajax.onreadystatechange = function() {
        if (ajax.readyState == 4) {
            if (ajax.responseText != previous) {
                alert("file changed!");
                previous = ajax.responseText;
            }
        }
    };
    ajax.open("POST", "foo.txt", true); //Use POST to avoid caching
    ajax.send();
}, 1000);

Я только что проверил его, и он работает довольно хорошо, но я все еще утверждаю, что AJAX - не тот путьВот.Сравнение содержимого файла будет большим для больших файлов.Кроме того, вы не упомянули ни одного фреймворка, но вы должны использовать его для AJAX, просто для того, чтобы справиться с кросс-браузерными несоответствиями.

0 голосов
/ 11 августа 2011

Я недавно сделал это с нуля.

Я не знаю, насколько вы нуб с PHP (это единственный серверный язык сценариев, который я знаю), но я постараюсь быть максимально кратким, не стесняйтесь задавать любые сомнения.

Я использую длинный опрос, который состоит в этом (

  1. Создание PHP-скрипта, который периодически проверяет содержимое файла и отвечает только тогда, когда видит какие-либо изменения (может содержать описание изменения в ответе)
  2. Создайте свой объект XHR
  3. Включите ваш код уведомления в качестве функции обратного вызова (можно использовать описание)
  4. Сделать запрос
  5. PHP-скрипт начнет проверку файла, но не ответит, пока не произойдет изменение
  6. Когда он ответит, будет вызван обратный вызов и ваш код уведомления запустится

Если вас не интересует содержимое файла, только то, что он был изменен, вы можете проверить время последнего изменения вместо содержимого в сценарии PHP.

РЕДАКТИРОВАТЬ: из какого-то комментария я вижу, что есть что-то для отслеживания изменений файлов, называемое FAM, что, кажется, является подходящим для сценария PHP

0 голосов
/ 11 августа 2011

AJAX - это просто javascript, поэтому из его определения у вас нет какого-либо инструмента для доступа к файлу, если только другая служба не вызовет js / AJAX для уведомления об изменении.

...