Помогите создать потоковый (или push) API с PHP и Apache - PullRequest
1 голос
/ 13 июля 2011

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

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

Мой язык программирования - PHP, а мой сервер - Apache. Если бы мне было абсолютно необходимо, я мог бы переключиться на Lighttpd или nginx, но это абсолютное последнее средство, поскольку это потребовало бы большого количества изменений во всем моем существующем коде.

Я читал эту статью:

http://www.zeitoun.net/articles/comet_and_php/start

И проверил это, но, к сожалению, все, что происходит, это то, что мой браузер пытается загрузить страницу и фактически не отображает время. Я подозреваю, что это связано с тем, что по какой-то причине я никогда не смог заставить буферизацию вывода работать на моем сервере, если я не отправляю 64 КБ (или больше) данных. Я слышал, что мне пришлось отключить gzip, что я и сделал, и он все еще не работал, поэтому я не знаю.

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Посмотрите на некоторые существующие технологии, чтобы помочь вам сделать это:

Tornado

Tornado - это версия масштабируемого, неблокирующего веб-сервера и инструментов с открытым исходным кодом, которые поддерживают FriendFeed. Приложение FriendFeed написано с использованием веб-фреймворка, немного похожего на web.py или веб-приложение Google, но с дополнительными инструментами и оптимизациями для использования преимуществ базовой неблокирующей инфраструктуры.

Толкатель

Pusher - это размещенный API-интерфейс для быстрого, простого и безопасного добавления масштабируемой функциональности в реальном времени с помощью WebSockets в веб-приложения и мобильные приложения.

Оба чрезвычайно быстры и масштабируемы, и я настроил оба относительно легко.

0 голосов
/ 07 сентября 2016

Да, еще одна хорошая вещь http://socket.io/ а также http://elephant.io/ некоторые учебные заведения, подобные этому, также могут быть полезны. http://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html

0 голосов
/ 13 июля 2011

Ну, вы могли бы сделать это несколькими способами, вы могли бы встроить модуль опроса на стороне клиента, или вы могли бы использовать что-то вроде NodeJS. (http://nodejs.org/) или веб-сокеты.

...