大型PHP数组使用MySQL搜索执行不正确

时间:2013-11-11 14:47:52

标签: php mysql

我有一个代表地图的瓷砖网格。当我选择某个图块时,我会在所选图块的给定距离内创建所有图块的数组(不是矩阵)。每个图块由5个字符的字符串表示,该字符串包含x和y坐标。因此,距离tile ['02 -02'] 1号距离的数组看起来像['01 -01','01-02','01 -03','02-01'等......

在我拥有该数组后,我搜索MySQL数据库以查找属于搜索数组的行。所以在上面的例子中,如果一个对象在01-01下降而另一个对象在03-03下降,则搜索将返回两个对象的行。

所有这一切都适用于相对较小的距离。我可以毫无问题地搜索10到100的距离。但随着距离的增加,我开始得到奇怪的结果。我的脚本运行多个搜索。在大约100到250之间的距离,前几个MySQL查询运行正常,但后来的查询根本不返回任何内容。超过250左右,我得到一个致命的错误,我已经在PHP最大内存分配上运行。

扩展PHP可用的内存是一个简单的解决方案,我可以自己处理。我正在寻找导致100到250之间错误的原因。当我开始调试时,我尝试将我的搜索数组打印到浏览器中以找出里面的内容。当脚本执行时,搜索阵列会短暂打印...然后在下一个阵列打印时从浏览器中消失。在脚本结束时,即使打印的最终数组也会消失。我不知道任何会导致PHP将HTML打印到浏览器然后在客户端将其擦除之后的任何内容。这完全是奇怪的。

[编辑:过了一段时间,出现了打印的数组。我认为这只是一个浏览器内存问题,但它没有解决为什么MySQL查询不打印相应的对象。]

我也不确定什么会导致搜索数组在前几次搜索中正常工作,然后开始无法在脚本中返回任何对象。

我想我的问题是双重的。首先,什么会导致这种奇怪的(在我的理解中)行为并且可以修复吗?其次,有人可以建议一种更好的方法来实现相同的功能,并首先避免这个问题吗?

0 个答案:

没有答案