如何使用php实现推送技术?

如何使用php实现推送技术?,php,jquery,Php,Jquery,我有一种应用程序,必须定期查询数据库。我想使用推送技术,这样当数据库更新时,服务器会向客户端发送数据。如何实现这一点 您可以在PHP中使用SOAP实现web服务/API。您可以在PHP中使用SOAP实现web服务/API。我们非常定期地这样做-我们的方式是“长轮询”: 从客户端启动异步轮询请求 在服务器上,只需让此轮询请求等待30秒(如果需要很长时间,请每隔几秒钟发送\0或空白) 更新数据库时,在服务器端创建某种类型的事件 当长轮询处理程序检测到此类事件时,写入结果客户端通知并结束请求 在客户

我有一种应用程序,必须定期查询数据库。我想使用推送技术,这样当数据库更新时,服务器会向客户端发送数据。如何实现这一点

您可以在PHP中使用SOAP实现web服务/API。

您可以在PHP中使用SOAP实现web服务/API。

我们非常定期地这样做-我们的方式是“长轮询”:

  • 从客户端启动异步轮询请求
  • 在服务器上,只需让此轮询请求等待30秒(如果需要很长时间,请每隔几秒钟发送\0或空白)
  • 更新数据库时,在服务器端创建某种类型的事件
  • 当长轮询处理程序检测到此类事件时,写入结果客户端通知并结束请求
  • 在客户端上,当asyn轮询结束时,检查它是否有通知,处理它们,然后开始下一个长轮询

我们经常这样做——我们的方式是“长轮询”:

  • 从客户端启动异步轮询请求
  • 在服务器上,只需让此轮询请求等待30秒(如果需要很长时间,请每隔几秒钟发送\0或空白)
  • 更新数据库时,在服务器端创建某种类型的事件
  • 当长轮询处理程序检测到此类事件时,写入结果客户端通知并结束请求
  • 在客户端上,当asyn轮询结束时,检查它是否有通知,处理它们,然后开始下一个长轮询

PHP不适用于此,因为您需要为每个客户端打开一个请求。或者,您可以通过每隔几秒钟用JavaScript轮询服务器来伪造请求。这不是真正的推送,但取决于数据的及时性,这可能没问题。这需要更多的上下文,因为它在很大程度上取决于体系结构的其余部分、客户端的类型以及可以触发更新的事件。我不同意PHP不适用-PHP中没有任何内容,这使得长时间轮询AJAX和friends变得不可行,事实上我一直都在这么做(在售票应用程序中更新座位计划,当一个座位在另一个boxoffice售出时)。PHP不适合这样做,因为你需要为每个客户机打开一个请求。或者,你每隔几秒钟就用JavaScript轮询服务器一次,以此来假装它。这不是真正的推送,但取决于数据的及时性,这可能没问题。这需要更多的上下文,因为它在很大程度上取决于体系结构的其余部分、客户端的类型以及可以触发更新的事件。我不同意PHP不适用-PHP中没有任何内容,这使得长轮询AJAX和friends变得不可行,事实上我一直都在这么做(在售票应用程序中更新座位计划,当一个座位在另一个票房售出时),通常是Apache,通常是LAMP stack,通常是Ubuntu服务器LTS,而长轮询窃取了您的流程,您不会遇到麻烦吗,如果你遵循一些简单的规则,没有问题:1。Longpoll处理程序不应该使用太多内存——在用户真正完成一些工作之前,尽可能保持它们的基本功能。2.注意你的连接数,必要时调整你的apache典型的apache,典型的LAMP堆栈,典型的Ubuntu服务器LTS,如果你遵循一些简单的规则,你不会遇到长轮询窃取进程的问题吗?不,没有问题:1。Longpoll处理程序不应该使用太多内存——在用户真正完成一些工作之前,尽可能保持它们的基本功能。2.关注您的连接数,必要时调整apache