我有一个代表地图的瓷砖网格。当我选择某个图块时,我会在所选图块的给定距离内创建一个包含所有图块的数组(不是矩阵)。每个图块由一个包含 x 和 y 坐标的 5 个字符串表示。因此,距离 tile ['02-02'] 距离为 1 的数组看起来像 ['01-01','01-02', '01-03','02-01', etc...]
拥有该数组后,我搜索 MySQL 数据库以查找属于搜索数组的行。所以在上面的例子中,如果一个对象落在 01-01 而另一个对象落在 03-03,搜索将返回这两个对象的行。
所有这些都适用于相对较小的距离。我可以毫无问题地搜索 10 甚至 100 的距离。但随着距离的增加,我开始得到奇怪的结果。我的脚本运行多个搜索。在大约 100 到 250 之间的距离处,前几个 MySQL 查询运行良好,但后面的查询根本不返回任何内容。超过 250 左右,我收到一个致命错误,我已经超过了 PHP 最大内存分配。
扩展 PHP 可用的内存是一个简单的解决方法,我可以自己处理。我正在寻找导致 100 到 250 之间错误的原因。当我开始调试时,我尝试将我的搜索数组打印到浏览器中以找出里面的内容。当脚本执行时,搜索数组会短暂打印...然后在下一个数组打印时从浏览器中消失。在脚本结束时,甚至打印的最终数组也会消失。我不知道有什么会导致 PHP 将 HTML 打印到浏览器,然后在客户端将其删除。这太奇怪了。
[编辑:一段时间后,打印的数组出现。我认为这只是浏览器内存问题,但它没有解决 MySQL 查询没有打印适当对象的原因。]
我也不确定是什么导致搜索数组在前几次搜索中正常工作,然后开始无法在脚本中返回任何对象。
我想我的问题是双重的。首先,什么会导致这种奇怪的(在我的理解中)行为,可以修复吗?其次,有人可以提出更好的方法来实现相同的功能并首先避免这个问题吗?