从PHP查询100万条记录到PHP中的数组
我的最终目标是向Google Maps API发送300万条记录,以显示为标记,但在此之前…
我甚至无法在PHP数组中加载100万.每个元素的数据为18位,包含2列和100万行. 查询只是一个直接的SELECT *,但是当循环并在数组中存储正确的记录时,我的内存不足.我尝试过使用SplFixedArray,但也没有运气. 我需要找到一个好方法来批量处理并将其拆分 – 运行一些测试后,我可以将大约500k拉入数组而不会达到内存限制(已经是512M!),所以我可以在2或3个疑问?在页面加载之前我仍然需要在服务器端保存到阵列中的全部数据,并且我可以将它传递给Maps,所以我假设批处理它不能解决它,因为它仍然会在内存中? 编辑:有一个很大的评论链增长,但大多数人都同意这是一个坏主意由于某种原因.因此,我的解决方案是将其拉回到大约300k点,这可以通过更少的头部攻击来实现. 解决方法
试图将数百万的地图标记输入谷歌地图确实没有任何意义.
从内存角度或性能角度来看,这是不可行的.只要考虑一下这些数据的大小 – 即使每个标记只是一个字节的数据,也就是3兆字节.但实际上,每个标记最少需要大约20个字节,仅用于co-ords和JSON标记,因此在你开始为每个标记添加描述之前需要60兆字节.您的系统无法以足够快的速度将其传输到Google,以使其在网络上可用.即使你可以,谷歌也不会接受你每次有人想要查看你的地图时向他们发送那种数据. 无论如何,地图上的所有标记都无法使用;他们会掩盖整个地图和彼此,只是搞得一团糟. 即使向Google发送几百张地图标记也会推动它.发送数百万美元是不会发生的. 那你能做什么呢?其他网站如何设法同时拥有数千万个标记?答案很简单 – 他们没有.它们仅向Google发送标记,用于显示正在显示的地图部分. 在更宽的缩放级别,您甚至不显示标记;你有一个预先渲染的热图,显示你的覆盖范围.在更接近的缩放级别,您只需加载正在显示的区域的地图引脚.移动地图后,您将加载更多. 我的意思是一个很好的例子是Xfinity wifi map.它们在地图上有数十万个点,但是从不加载超过几十个标记.快速且易于管理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |