Ajax查询无需重新连接到数据库

时间:2016-02-05 10:39:05

标签: javascript php mysql ajax

我写了一个网页来在地图上显示汽车。所有页面刷新过程都使用XMLHttpRequest完成。所有数据库查询,尽管页面加载时都是使用相同的方法完成的。 问题是,当我发送XMLHttpRequest时,我需要打开与我的数据库的新连接。页面每隔几秒刷新一次,并且必须刷新很多对象。它会为我的数据库生成许多新连接。

我想要做的是在我启动页面时只打开一次mysql连接,并在所有这些Ajax查询中使用此连接。

有可能吗?

(编辑)的

基于你的答案我一直在寻找持久连接和Node.js,但我仍然有理解它的问题。 有人可以发布持久连接和XHR的示例吗?

请帮助我了解Http连接生命周期。当我写mysql_connect时会发生什么?什么时候连接关闭? mysql_pconnect怎么样?从服务器角度看,打开连接如何?

1 个答案:

答案 0 :(得分:0)

如果没有技巧,你就无法使用PHP。

每当你要求一个由PHP女巫查询数据库(如MySQL)的网页时,PHP需要"打开"连接,查询数据库,关闭连接并关闭自己。

......但有一些技巧:

1:分块解决方案

使用循环对PHP脚本执行XMLHttpRequest请求(30秒可能是好的)。每次循环执行都可以编写一些数据,以便在ajax查询中返回。循环结束后,重试查询(它将每30秒执行一次连接)。

此解决方案称为分块数据。你返回"部分"响应每个循环和ajax查询解析每个数据块。这需要PHP和Web服务器没有缓冲缓存。

2:守护进程解决方案

你可以拥有一个"背景" PHP脚本作为守护进程使用一个线程(或多个?)查询数据库,制作一些静态文件(包含json?)并使用XMLHttpRequest查询静态文件。