我写了一个网页来在地图上显示汽车。所有页面刷新过程都使用XMLHttpRequest完成。所有数据库查询,尽管页面加载时都是使用相同的方法完成的。 问题是,当我发送XMLHttpRequest时,我需要打开与我的数据库的新连接。页面每隔几秒刷新一次,并且必须刷新很多对象。它会为我的数据库生成许多新连接。
我想要做的是在我启动页面时只打开一次mysql连接,并在所有这些Ajax查询中使用此连接。
有可能吗?
(编辑)的
基于你的答案我一直在寻找持久连接和Node.js,但我仍然有理解它的问题。 有人可以发布持久连接和XHR的示例吗?
请帮助我了解Http连接生命周期。当我写mysql_connect时会发生什么?什么时候连接关闭? mysql_pconnect怎么样?从服务器角度看,打开连接如何?
答案 0 :(得分:0)
如果没有技巧,你就无法使用PHP。
每当你要求一个由PHP女巫查询数据库(如MySQL)的网页时,PHP需要"打开"连接,查询数据库,关闭连接并关闭自己。
......但有一些技巧:
1:分块解决方案
使用循环对PHP脚本执行XMLHttpRequest
请求(30秒可能是好的)。每次循环执行都可以编写一些数据,以便在ajax查询中返回。循环结束后,重试查询(它将每30秒执行一次连接)。
此解决方案称为分块数据。你返回"部分"响应每个循环和ajax查询解析每个数据块。这需要PHP和Web服务器没有缓冲缓存。
2:守护进程解决方案
你可以拥有一个"背景" PHP脚本作为守护进程使用一个线程(或多个?)查询数据库,制作一些静态文件(包含json?)并使用XMLHttpRequest
查询静态文件。