【问题标题】:Maintenance script makes loading slow维护脚本使加载变慢
【发布时间】:2011-02-08 13:04:34
【问题描述】:

每次用户访问主页时,我都会在网站上运行一个脚本。该脚本将遍历数据库中的每一行,并检查其日期是否已过期,如果为真则将其存档。但是,由于它有很多行,因此加载主页确实需要一些时间(例如 6 秒)。

首先,我建议使用 cronjob 来完成任务,但我的老板提出了这个想法,但我离题了......

我的问题是,是否可以并行运行脚本,以便在脚本也在运行的同时继续加载主页。另请注意,主页显示来自数据库的数据,因此在主页完成加载之前结束脚本的执行非常重要

【问题讨论】:

  • 不是一个好主意,你应该使用 cron。如果两个不同的用户在几秒钟内互相点击页面,你将同时进行两次更新……这太浪费资源了;你应该只需要每天运行一次
  • 首先将您的职位与您老板的职位交换:D

标签: php mysql


【解决方案1】:

如果您每次访问时都需要运行维护脚本,那么您的网站已经非常损坏,最好的办法是修复系统,使其不需要每秒都维护

【讨论】:

    【解决方案2】:

    是否可以并行运行脚本,这样,主页可以在脚本运行的同时继续加载。

    是的。您可以异步调用维护脚本。通过在维护脚本中设置ignore_user_abort,然后从主页打开套接字到该脚本,然后立即关闭它。

    但是,如果您仍然想等到维护脚本完成它的工作后再加载主页,那么这样做真的没有意义。无论如何,您仍然需要等待这 6 秒。

    所以最好的方法是检查为什么每次都需要运行这个脚本,并尝试优化它。

    例如,如果您只需要设置所有过期项目,则可以只使用单个查询而不是单独检查所有行。例如。 (UPDATE table SET expired=1 WHERE expiry_date

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多