使用SplObserver时关于php实例的基本问题

时间:2011-08-04 13:32:23

标签: php memory apache2 webserver observer-pattern

我正在为某种信息服务规划Android应用程序。

客户端可以从服务器查询一些文本信息,也可以添加文本信息。这个概念如下:

  • 中央实例是运行php的apache web服务器。
  • 当Android应用第一次联系服务器时(例如 当客户端查询当前信息时),客户端(ip 地址)应该在服务器上运行的php脚本上注册 并应收到最新数据。
  • 当任何注册客户端添加文本数据时,每个注册客户端 应获取更新数据的信息以查看最新文本 数据。
  • 这应该通过对ip地址的udp响应来管理 所有客户端的Android应用程序。这意味着每个IP地址 已被附加(即“已注册”)应通知。

我想在服务器端用观察者模式SplObserver和SplSubject实现它。不幸的是我不熟悉php的技术背景。所以我想知道观察者如何能够使用php。

php是否使用某种实例(尽管它是一种解释语言)来记住观察者的状态?我的想法是,php脚本在此时被调用并立即“忘记”其状态。这实际上是客户端服务器通信的内容。

所以任何人都可以向我解释观察者应该如何在这种情况下工作,分别如何保证注册客户端不会因使用php观察者模式而丢失?

(如果这不起作用,我只是将ip地址保存到数据库中,不要忘记它并将其实现为简单的数据库查询。)

1 个答案:

答案 0 :(得分:0)

SplObserver只是一个简单的类,可以帮助使用Observer模式。它不记得请求之间的任何状态,也不记得PHP本身。

如果您在服务器上使用PHP,则无法将数据推送到大量客户端。相反,您必须让客户定期轮询服务器以检查新数据。这样做的问题是获得足够快的服务器来处理每Y秒请求更新信息的X个客户端的流量。最后,脚本语言对于大批量推送更新来说是一个糟糕的选择,你可以更好地使用Java或Erlang,这将使应用程序能够连续运行并向客户端广播UDP数据包。