Система Ajax push

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

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

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

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

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

Видеть:

  • Общие вопросы по полному опросу / HTTP-потоку
  • phpwebsocket
  • php-websocket на github
  • трещотка
  • как реализовать комету в PHP – часто связан с руководством

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

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

Ресурсы:

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

Вы можете имитировать эффект 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 или опрос?
Код опроса PHP или Javascript
ExtJS 3.0: Ext.Direct с PHP: опрос: ok и Pushing?
Программирование кометы: использование Ajax для имитации загрузки сервера

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

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