好的,我现在不是如何制定这个问题,特别是不是标题。但是我会试一试,希望我能够保持足够的特异性,同时努力让它与其他人保持联系。
我想在每隔X秒从后台运行一个php脚本(通过ajax)从数据库返回数据,如何在不使用大量服务器资源的情况下以最佳方式执行此操作?
我的解决方案如下:
用户访问网页时,该页面运行javascript的时间为x秒。 javascript调用一个PHP脚本/文件来调用数据库,检索数据并将数据返回给javascript。然后javascript将数据打印到页面。我担心,如果页面上有很多(10 000)个同时访问者,这种解决方法会给服务器带来很大的压力。还有另一种方法吗?
答案 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请求必须 发生以获取新数据 服务器。