Ajax push system - PullRequest
       2

Ajax push system

15 голосов
/ 29 сентября 2011

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

Я бы хотел, чтобы эта страница автоматически обновляласьвсякий раз, когда люди что-то покупают у меня.

Я мог бы AJAX звонить каждые 5 секунд, чтобы проверить заказы в моих базах данных, но это похоже на 1980?или это так, как люди делают это?

Как я могу отправлять уведомление на мою страницу php всякий раз, когда моя функция php newOrder () (позволяетназывать это так) называется?

Ответы [ 3 ]

11 голосов
/ 29 сентября 2011

Вы можете добиться push в PHP, но это не будет наиболее эффективным решением, потому что для достижения push вам необходимо поддерживать долго работающие соединения между вашим клиентом и вашим сервером (соединения HTTP или WebSocket).

См.:

Общее лучшепрактика построения инфраструктуры реального времени заключалась в том, чтобы отделить push-решение от вашего веб-приложения ( Примечание: node.js и socket.io немного изменили это, но лично я все же думаю, что оно должно быть отделено ).Но, предполагая, что последнее по-прежнему является лучшим решением, вам нужно написать / разместить / установить это push-решение.Разъединение также означает, что технология не обязательно должна быть PHP, но вы можете получить доступ / использовать ее из PHP.Может быть, немного излишним?И особенно если у вас на вашем сайте не слишком много пользователей?

Для простоты я бы рекомендовал использовать стороннюю размещенную службу.Я работаю в одной такой компании под названием Pusher .Использование такого сервиса, как наш, позволяет избавиться от необходимости устанавливать и поддерживать часть вашего приложения в реальном времени.Это также позволяет легко добавить нужную вам функцию push.Все, что вам нужно сделать, это добавить несколько строк кода PHP в существующее приложение, чтобы активировать push-уведомления, и добавить несколько строк JavaScript в ваш интерфейс.

Ресурсы:

Если вы хотите исследовать альтернативы или некоторые технологииЯ уже упоминал выше, что у меня есть список технологий реального времени , которые могут вас также заинтересовать.

2 голосов
/ 29 сентября 2011

Вы можете смоделировать эффект push, выполнив следующее (псевдокод!)

// This would go on for 60-90 seconds, unless there is new data
for($i = 1; $i <= 60; $i++) {
  // Check in the database what the last timestamp is
  // Compare this to the timestamp that has been posted by the AJAX-call
  // If there is something new, show the data and then exit
  // If not, sleep for 1-3 seconds
}

Ваш JavaScript:

function pollForNewProducts() {
  // Check if there is a timestamp
  // Make an AJAX-request to the script that has the first code in it
  // If there is a response (JSON?) than evaluate that
  // If not, then run the script again
  pollForNewProducts();
}

Это простой, но эффективный способ позволить серверу выполнять всю тяжелую работу вместо тайм-аутов на стороне клиента, из-за которых браузер потребляет память.

Подробнее об этом:
Простой пример кода «Длинный опрос»?
Уведомление клиента, я должен использовать AJAX Push или Poll?
PHP или код опроса Javascript
ExtJS 3.0: Ext.Direct с PHP: опрос: нормально и отправка?
Программирование Comet: использование Ajax для симуляции Push сервера

1 голос
/ 29 сентября 2011

Помимо отличного предложения о nodejs .. если вы все еще хотите использовать php для достижения этой цели, вы должны искать метод COMET, а не ajax.

Howto с php здесь: http://www.zeitoun.net/articles/comet%5Fand%5Fphp/start

...