Как получить список пользователей, использующих AJAX и PHP в режиме реального времени, из базы данных MySQL - PullRequest
1 голос
/ 15 апреля 2011

Итак, я подумал, у меня есть простая cms и страница администрирования со списком всех пользователей, зарегистрированных в моей системе, но мне бы хотелось, чтобы в режиме реального времени можно было видеть, как создаются эти пользователи, и любые обновления, которые они вносят в эту информацию. Так что, если я нахожусь на странице администратора и новый пользователь регистрируется или кто-то меняет там адрес электронной почты, я бы хотел, чтобы страница показывала изменения без обновления, я действительно не знаю, с чего начать, за исключением того, что я знаю, что у меня будет использовать Ajax для обновления информации без обновления страницы. Если бы кто-нибудь мог дать мне какие-либо указатели или фрагменты, я был бы очень благодарен.

Спасибо
Ben

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

Не знаю точно, сколько деталей вы ищете здесь, но вот высокоуровневый снимок:

check_new_users.php

$timestamp = $_GET['timestamp'];
$array_of_new_users = getNewUsersFromDB($timestamp);
echo json_encode(array('new_users' => $array_of_new_users));

check_new_users.js (при условии, что у вас включен JQuery)

$(document).ready(function () {

  // function to poll the server and get the new users from your script
  var CheckNewUsers = function () {
    var data = {timestamp : new Date().getTime()};
    $.getJSON("path/to/check_new_users.php", data, function (JSON) {
      var new_users = JSON.new_users,
        rowHTML = '';

      // the exact structure here depends on what the array
      // returned from the function getNewUsersFromDB() looks like
      // lets assume it looks like:
      // array(userid => array(info about the user))
      // E.G.
      // array(1 => array(userid => 1, username => "matt"),
      //       2 => array(userid => 2, username => "joe")...

      // process and display the new users onto your page
      for (userid in new_users){
        u = new_users[userid];
        rowHTML = '<tr><td>' + u.userid + '</td><td>' + u.username '</td></tr>'
        $('#user_table').append(rowHTML);
      }
    }
  };

  // and set the function to run every 5 minutes
  setInterval(CheckNewUsers, 300000);  // 300000 milli = 5 minutes

});

Дайте мне знать, если вы хотите получить более подробную информацию по любому из этих вопросов, я с удовольствием разработаю!

0 голосов
/ 15 апреля 2011

надеюсь, что это поможет, я знаю, что не знаю точных деталей, но это может дать вам дорожную карту.

вы можете использовать javascript для опроса сервера через некоторый регулярный интервал (возможно, один раз в 15секунд).

он может сделать HTTP-запрос на некоторый URL, выделенный для этой цели, например, yoursite.com/poll_for_user_changes.этот URL, вместо того, чтобы возвращать веб-контент HTML, может просто отправить объект JSON (или какой-либо другой формат данных), который будет содержать любые изменения, о которых вы хотели бы знать.

при попадании на сайт.com / poll_for_user_changes, ваш сервер должен выяснить, были ли изменения в вашей таблице пользователей в базе данных.поэтому было бы полезно, если бы ваш javascript отслеживал, когда браузер последний раз получал обновление от сервера, поэтому, когда он запрашивает новое обновление, он может отправить в строке получения URL (или через сообщение) last_updated_timestamp, когдапоследний раз получил обновление.сервер может использовать эту информацию, создав запрос к базе данных, который запрашивает, например, строки в пользовательской таблице, которые имеют временную метку создания> last_updated_timestamp.

, как только ваш javascript получает данные от сервера обыли ли какие-либо изменения, вам нужно будет решить, как включить эти данные в веб-сайт, чтобы автоматически показывать изменения без обновления.

0 голосов
/ 15 апреля 2011

В зависимости от используемой вами CMS, это может быть легко или сложно. Как сказал Ник, для этого вам потребуется кодировать сайт на стороне клиента, который опрашивает серверный скрипт через заданные интервалы. Это не должно быть слишком сложно, особенно с использованием чего-то вроде jQuery.

На стороне сервера вам необходимо знать, хранятся ли эти изменения в таблице или нет. Некоторые CMS могут ставить временные метки для правок и создания новых пользователей. Если это так, то вы должны передать метку времени на страницу AJAX вместе с любыми обновлениями. Затем в следующем опросе включите последнюю отметку времени в запрос и получите запрос базы данных для действия, где TIME> TIMESTAMP.

Вам может понадобиться отредактировать CMS в нескольких местах, чтобы добавить эту функцию, и сложно сказать, что именно нужно, не зная больше деталей.

...