每隔X秒(异步)从数据库访问数据的最佳方式

时间:2010-11-12 10:47:32

标签: php database asynchronous

好的,我现在不是如何制定这个问题,特别是不是标题。但是我会试一试,希望我能够保持足够的特异性,同时努力让它与其他人保持联系。

我想在每隔X秒从后台运行一个php脚本(通过ajax)从数据库返回数据,如何在不使用大量服务器资源的情况下以最佳方式执行此操作?

我的解决方案如下:

用户访问网页时,该页面运行javascript的时间为x秒。 javascript调用一个PHP脚本/文件来调用数据库,检索数据并将数据返回给javascript。然后javascript将数据打印到页面。我担心,如果页面上有很多(10 000)个同时访问者,这种解决方法会给服务器带来很大的压力。还有另一种方法吗?

2 个答案:

答案 0 :(得分:1)

根据你提出的规格/要求,这听起来是最好的方式。

另一种方法是采取中间步骤。如果您将拥有巨大数量的流量(否则这不会带来任何好处,但相反可能会使进程过度复杂/缓慢),请添加另一个表,记录上次数据集的时间如果“上一次”被认为是很久以前,那么从一个新的查询中创建一个硬文件(比如XML),这个XML然后将返回的结果提供给用户。

所以:

1.Javascript调用PHP脚本(AJAX)

2.PHP ping DB表,其中包含上次完全输出的数据

3.如果时间过长,则重新运行“main”查询,并从输出重新生成XML文件 ELSE跳到4

4.获取XML文件并根据返回的AJAX输出

答案 1 :(得分:1)

您可以采用其他方式,在您需要时联系客户并浪费更少的资源。

Comet这是选择此选项的方法:

  

Comet是一种编程技术   使Web服务器能够发送数据   客户没有任何需要   客户要求它。这个   技术将产生更多的响应   应用程序比经典的AJAX。在   经典的AJAX应用程序,Web浏览器   (客户)无法真实通知   服务器数据模型的时间   改变。用户必须创建一个   请求(例如通过单击a   链接)或定期的AJAX请求必须   发生以获取新数据   服务器。