【问题标题】:Prevent long pending time as a result of large mysql query result in php防止由于 php 中的大型 mysql 查询结果而导致长时间挂起
【发布时间】:2017-04-23 12:40:30
【问题描述】:

我有复杂的 MySQL 查询来响应大量数据,因此在页面完全加载之前,显示此响应的 PHP 页面在运行时间 2-3 分钟之前获得了挂起状态 (DevTools),我'已经能够看到内容,同时等待它的空白页......

有没有一种优雅的方法可以在 php 脚本进入下一行(while 循环)之前将结果生成切片,就像每一行都会被回显到页面。可能是 jQuery 异步请求或其他一些巧妙而优雅的解决方案。

所以最后我将能够在页面加载时开始看到结果,它可能需要同样的 2-3 分钟加载,但每秒(例如)我会看到页面上回显一行,而不是在空白页前等待 2-3 分钟。

附:我认为它应该像一些图像延迟加载或像 facebook 向下滚动那样加载下一个结果(但没有滚动)

【问题讨论】:

  • 相反,让我们尝试优化慢 SQL 语句。请提供EXPLAIN SELECT ...SHOW CREATE TABLE

标签: php jquery mysql response-time bigdata


【解决方案1】:

您可以在每五秒后在 mysql 查询中使用 limit 子句,您可以运行您的代码并使用 ajax 在您的页面上获取接下来的 10 行。

【讨论】:

  • 上述解决方案似乎不错,因为您需要使用分页,因为数据量很大,并且需要创建所需的列索引——因此可以更快地检索数据。在上面的建议中似乎不错,但不是每 5 秒触发一次。您可以在此处实现可滚动分页参考:thesoftwareguy.in/ajax-scroll-pagination-php-mysql 因为如果用户对更多数据不感兴趣,则无需检索并将其保存在页面中。使用加载器图像,因此用户将意识到数据仍在检索。
  • @Senthil 我会看看你提供的链接,但实际上我需要将所有数据加载到一个页面中并开始加载 onload(而不是滚动),因为最终用户应该能够在单个页面上查看所有数据,但他/她将开始处理开始时加载的数据,而不是等待 2-3 分钟。
猜你喜欢
  • 2010-09-26
  • 2018-07-30
  • 2011-06-03
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2011-07-13
  • 2019-01-27
  • 2011-12-02
相关资源
最近更新 更多