【发布时间】:2020-05-26 01:47:01
【问题描述】:
我有一个 PHP 脚本,它当前获取数据并在对其应用一系列规则后,用获取的数据填充数据库表。然后,它根据所有数据进行某种计算,并根据计算结果为数据中的每条记录分配一个值。
单次运行大约需要 25 分钟,我希望在任何给定时间尽可能获得最新数据。 所以我猜这个脚本只能作为 cron 作业每 30 分钟运行一次。
但是,在获取的数据中,大约 4/5 在 30 分钟内变化不大。 我可以将脚本定位为获取预计在每个查询之间会有更频繁更改的数据的 1/5。这大约需要 6-7 分钟才能运行。
问题是我如何创建一个脚本,该脚本将每 10 分钟获取 1/5 的数据,并继续每 30 分钟获取另外 4/5 的数据,因为最终我需要显示所有数据并进行计算数据在一起。
应该是一个脚本还是两个脚本?是否应该在给定时间将它们设置为 cron 作业?
我应该使用例如不同的表,并制作一个同时使用这两个表的视图吗?
另外,当两个脚本一起运行时,在第 30 分钟会发生什么,如果两者都需要相同的 MYSQL 服务器来处理,我认为两者的完成时间都会慢于 30 分钟和 10 分钟(如果我获取它,API 服务器也可能会引发更多错误一次有 2 个脚本,但不确定)。
提高性能和速度的正确方法是什么?
【问题讨论】:
-
我会调查现有脚本是否可以通过优化查询或调整服务器设置来加快速度。 25 分钟对于经常性工作来说是相当长的时间,如果它没有更新数百万行,我希望它应该运行得更快。
标签: php mysql multithreading database-design architecture