【发布时间】:2014-04-15 14:36:06
【问题描述】:
我正在构建一个 Web 应用程序,它需要使用 jquery ajax 短格式一次进行大约 28000 次数据库调用。
它通过了大约 6000 个调用,但随后浏览器在浏览器控制台中给了我大约 20000 个以下错误(每个调用一个):
POST(我的数据库调用)net :: ERR_INSUFFICIENT_RESOURCES
有谁知道如何解决这个问题?也许要创建一个缓冲区或其他什么?
谢谢!
编辑1:添加一些代码:
好的,所以用户可以填写一些值(比如 GHI > 4500,宽高比介于 157.5 和 202.5 之间)
将进行以下调用:
loadAllData('ghi', 4500, findIdealPoints);
这个调用导致这个函数:
function loadAllData(type, above, callback){
var data = {};
$.post('php/getIdealData.php?action=get&type='+type+'&above='+above, data, callback);
}
在 PHP 中运行此查询:
"SELECT `GHI` , `lat` , `long`
FROM solar
WHERE `GHI` >'{$_GET['above']}' ORDER BY `lat`,`long`;";
以 JSON 格式返回数组中的大约 28880 条记录,并调用执行以下操作的回调方法:
function findIdealPoints(data){
var i = 0;
while (i < data.length){
loadAspectWithinRange('aspect', data[i]['lat'], data[i]['long'], 10, compareWithAspect);
i++;
}
}
运行这个 php 查询:
"SELECT `aspect`,
`lat`, `long`, distance_in_km
FROM (
SELECT `aspect`, `lat`, `long`,r,
(6378.10 * ACOS(COS(RADIANS(latpoint))
* COS(RADIANS(`lat`))
* COS(RADIANS(longpoint) - RADIANS(`long`))
+ SIN(RADIANS(latpoint))
* SIN(RADIANS(`lat`)))) AS distance_in_km
FROM aspect
JOIN (
SELECT '{$_GET['lat']}' AS latpoint, '{$_GET['long']}' AS longpoint, 10.0 AS r
) AS p
WHERE `lat`
BETWEEN latpoint - (r / 111.045)
AND latpoint + (r / 111.045)
AND `long`
BETWEEN longpoint - (r / (111.045 * COS(RADIANS(latpoint))))
AND longpoint + (r / (111.045 * COS(RADIANS(latpoint))))
AND `aspect`
BETWEEN '{$_GET['lowA']}' AND '{$_GET['highA']}'
) d
WHERE distance_in_km <= r
ORDER BY distance_in_km";
然后转到运行它的回调函数:
function compareWithAspect(data){
var idealPoints =[];
for (var i=0; i<data.length; i++){
idealPoints.push(new google.maps.LatLng(data[i]['lat'], data[i]['long']));
}
if (idealPoints.length > 1){
makePolygon(idealPoints)
}
}
而 makePolygon 只是使用 Google Maps API 在地图上绘制。
我知道这很多而且看起来很复杂,如果有人能告诉我一个更好的方法,我会很高兴的!
再次感谢
【问题讨论】:
-
为什么需要打这么多电话?是不是可以加入他们,这样你就不会接到那么多电话了?
-
不可能,我正在构建一个太阳能规划应用程序,它必须使用某些参数检查地图上每个点的质量。所以我采用大参数并将其与第二个参数进行比较。例如,有 GHI 和坡向,我需要所有高于 4500 的 GHI,即大约 28000 条记录,然后我需要检查每条记录周围 10 公里的任何朝南的坡向并标记这些点。
-
听起来你真的不需要那么多电话。你能分享你的代码吗?
-
28k 条记录中的每条记录都获得了 10 公里左右的所有点?
-
添加了一些代码!谢谢!
标签: jquery mysql ajax database memory