Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每X秒(异步)从数据库访问数据的最佳方式_Php_Database_Asynchronous - Fatal编程技术网

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

Php 每X秒(异步)从数据库访问数据的最佳方式,php,database,asynchronous,Php,Database,Asynchronous,好吧,我现在真的不知道该如何表述这个问题,尤其是这个题目。但我会尝试一下,希望我在努力让它与其他人相关的同时,做到足够具体 如果您想在后台(通过ajax)每隔X秒运行一个php脚本,从数据库返回数据,那么如何在不使用大量服务器资源的情况下以最佳方式执行此操作 我的解决方案如下所示: 用户访问某个网页时,该网页运行javascript的时间为x秒。javascript调用一个PHP脚本/文件,该脚本/文件调用数据库,检索数据并将数据返回给javascript。然后javascript将数据打印到页

好吧,我现在真的不知道该如何表述这个问题,尤其是这个题目。但我会尝试一下,希望我在努力让它与其他人相关的同时,做到足够具体

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

我的解决方案如下所示:


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

考虑到您提出的规范/要求,这听起来是最好的方法

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

因此:

1.Javascript调用PHP脚本(AJAX)

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

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


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

您可以使用另一种方式,在需要时与客户机联系,从而减少资源浪费

这是实现此选项的方法:

Comet是一种编程技术 使web服务器能够将数据发送到 客户不需要任何 客户端请求它。这 这种技术将产生更灵敏的反应 应用程序比经典的AJAX好。在里面 经典AJAX应用程序、web浏览器 无法实时通知(客户) 服务器数据模型具有的时间 改变。用户必须创建一个 请求(例如,通过单击 链接)或定期AJAX请求 为了从中获取新数据而发生 服务器


这解决了其中的一部分,是的;但是仍然需要一个服务器端进程来检查数据库中的数据是否发生了更改。您不需要这样做。更改数据库的进程也会触发对用户的请求。因此,从XML文件中获取数据比从数据库中获取数据更好?这取决于您的需要-在某些情况下,需要从数据库中创建XML文件。DB是“实时”请求的最佳选择,它有一个静态XML文件来服务请求,一个仍然由DB提供但经常更新的文件,可以减少DB负载。它真的围绕着你的配置,我现在真的不知道中间步骤是什么意思。但是,每x秒运行一次cron操作将结果打印到XML文件是否更好?你对我来说太快了:)如果你有高流量,而你认为你可能没有足够的带宽,那将是一个很好的方法:)把它看作一个节流阀。如果XML文件在读取的同时被修改(由cron操作更新),这不是一个问题吗?