【问题标题】:Best way to display 60,000 records on a php webpage在 php 网页上显示 60,000 条记录的最佳方式
【发布时间】:2011-06-15 15:30:54
【问题描述】:

我希望在网页上显示 60,000 条记录,并使用 php 从本地主机上的 mysql 数据库中提取记录。这 60,000 条记录可能会根据数据输入而变化。

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

我想就如何 1.以另一种方法显示数据,(我不确定是什么方法)或 2. 使用memcache等缓存技术加速从mysql服务器向网页浏览器发送数据。

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

感谢您和最诚挚的问候!

【问题讨论】:

  • 一次性?分页怎么样?
  • 永远不要这样做...您的浏览器 100% 将挂起
  • @ajreal Pfft。获得一个“真正的”浏览器;-) 然而,60k raw 记录对于任何人类 消费来说都不是理想的——即使没有资源问题。
  • 为用户提供一些过滤数据的方法,以便他们只收到其中一个有趣的子集。没有人能够合理地浏览 60,000 条记录——即使每条记录只看 1 秒钟也需要超过 2 天的全职工作时间。
  • 请问您为什么觉得有必要在一个屏幕上显示 60,000 条记录?老实说,我很好奇。

标签: php web-services web-applications


【解决方案1】:

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

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

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

【讨论】:

  • 还请遵循其他一些提示!不要试图显示所有页面链接提供一个下一步按钮,这将更具战术性!
  • 谢谢哈里什!我正在研究 ajax 教程来执行数据的预加载。
【解决方案2】:

数据表

你应该看看YUI's DataTable。您应该将数据表连接到autocomplete。在YUI2(help) 中也有一个例子,但是 YUI3 更快。

缓存

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

【讨论】:

  • 嗨,阿尔弗雷德,这东西太棒了!感谢您的提醒!
【解决方案3】:

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

【讨论】:

  • 嗨,Excalibur,你说得对!我不打算将 PHP 用于任何繁重的举重。处理应该在数据库中进行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多