Основной вопрос об экземплярах PHP при использовании SplObserver - PullRequest
0 голосов
/ 04 августа 2011

Я планирую приложение для Android для какой-либо информационной службы.

Клиенты могут запрашивать некоторую текстовую информацию с сервера и также могут добавлять текстовую информацию.Концепция заключается в следующем:

  • Центральным экземпляром является веб-сервер Apache с запущенным на нем php.
  • Когда приложение Android впервые обращается к серверу (например, когдаклиент запрашивает текущую информацию), клиент (IP-адрес) должен быть зарегистрирован в скрипте php, запущенном на сервере, и должен получать самые последние данные.
  • Когда любой зарегистрированный клиент добавляет текстовые данные, каждый зарегистрированный клиент должен получитьинформация для обновления данных для просмотра последних текстовых данных.
  • Это должно управляться с помощью ответа udp на ip-адреса всех клиентских приложений Android.Это означает, что каждый IP-адрес, который был
    был присоединен (что означает «зарегистрирован»), должен быть проинформирован.К сожалению, я не очень хорошо знаком с техническим опытом php.Поэтому мне интересно, как наблюдатель вообще может работать с php.

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

    Итак, кто-нибудь может объяснить мне, как должен работать наблюдатель в этом случае, соответственно, как я могу гарантировать, что зарегистрированные клиенты не будут потеряны при использовании наблюдателя phpшаблон?

    (Если это не сработает, я просто сохраню IP-адреса в базе данных, чтобы не забыть их и реализовал как простой запрос к базе данных.)

1 Ответ

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

SplObserver - это простой класс, который помогает использовать шаблон Observer.Он не запоминает состояния между запросами и сам PHP.

Если вы используете PHP на сервере, невозможно передать данные большому количеству клиентов.Вместо этого вам придется периодически проверять сервер на наличие новых данных.Проблема заключается в том, что сервер становится достаточно быстрым, чтобы обрабатывать трафик X-го числа клиентов, запрашивающих обновленную информацию каждые Y секунд.В конце концов, язык сценариев - плохой выбор для push-обновлений большого объема, и вам лучше будет использовать что-то вроде Java или Erlang, что позволит приложению работать непрерывно и транслировать UDP-пакеты клиентам.

...