在php网页上显示60,000条记录的最佳方式

时间:2011-01-26 04:41:38

标签: php web-services web-applications

我希望在网页上显示60,000条记录,用php从localhost上的mysql数据库中提取记录。这些60,000条记录可能会根据数据输入而改变。

记录有5个文本字段,由于记录数量庞大,需要花费大量时间将数据从mysql服务器发送到Web浏览器。即使在本地主机上,花费的时间大约为15秒。在此期间,页面为空。

我想就如何做到这一点寻求专业意见 1.用另一种方法显示数据,(我不知道用什么方法)或者 2.使用memcache等缓存技术加快从mysql服务器向Web浏览器发送数据。

最后,我将在互联网上部署应用程序,其中滞后将是非常不可接受的(即> 15秒)。

谢谢你,最诚挚的问候!

3 个答案:

答案 0 :(得分:4)

我建议尝试AJAX分页。没有用户可以一次查看和分析60k记录。你可以让php显示第一个x(无论多少适合平均一两个屏幕)记录,以填充2-3页,并让JavaScript监听滚动更改。如果用户开始向下滚动,请让它自动查询下一条y条记录,并将它们添加到显示列表中。可能还会从列表顶部删除记录。

此外,添加一些快速跳转链接或搜索功能可能会有所帮助,因为您不想向下滚动60k记录进行更改。

这将显着减轻服务器和客户端的负担,因为它一次只需要提供几百条记录。

答案 1 :(得分:2)

数据表

你应该看看YUI's DataTable。您应该将数据表挂钩到autocomplete。还有一个例子,他们是如何在YUI2(帮助)中做到的,但是YUI3要快得多。

缓存

缓存也很重要。你说你可以使用memcached,这非常好。我是redis的忠实粉丝(但两者都有效,但好消息是redis是我认为的better suited for autocomplete)。甚至还有Redis To go的免费计划。

答案 2 :(得分:0)

另一个重要提示是确保您从数据库中显示数据。换句话说,如果您需要进行任何计算或处理,请避免在循环期间在PHP代码中执行此操作。使用SQL函数来处理数据,名称字段等。数据库擅长于此类事情。当然,这可能适用于您正在做的事情,也可能不适用。