繁体   English   中英

是否最好每3分钟运行一次cron作业,或者如果已经过去3分钟,则仅在请求时才执行php脚本?

[英]Is it better to run a cron job every 3 minutes or do a php script only on request if 3 minutes already passed?

我的问题在这里很简单:我有一个php脚本,可以从不同的api检索大量的csv文件,将它们存储在数据库(MySQL)中并显示给用户。 我必须每3分钟查询一次这些api,以获取重要数据。 仅使用最后一个数据,无需获取历史数据。

我担心的是,如果没有人可以看到这些api,请避免查询这些api并在我的数据库中插入大量数据。

这不是速率限制的问题,仅是考虑减少无用的请求和插入数据库的问题。

我的问题如下:

  • 最好每3分钟使用一次cron作业来检索数据并存储它们,或者
  • 如果页面已加载并且自上次更新以来已经过了3分钟,请运行php脚本?

在第一种情况下,每个用户都将拥有最后一个值,并且即使没有人看到它们,也总是会检索数据。
在第二种情况下,一个用户每3分钟将检索全部数据(因此,其页面加载速度将比其他用户慢一些),但是如果没有人访问该站点,则不会存储任何无用的数据。

注意:
检索和插入数据大约需要10秒钟。

感谢您的见解!

您应该将两者结合起来。

如果您的站点上没有流量,则无需保持数据为最新。

如果您的站点上有流量,则需要使数据保持最新状态,但是三分钟的时间范围就足够了。

因此,如果最近X分钟内有活动,则需要三分钟全部获取数据。

否则,第一个用户将看到一条消息,提示正在准备数据,仅需10秒钟。 然后,您可以自动刷新网站。

当前没有能够在计算机上开箱即用地执行此处理的系统。 Cron可以帮助您完成工作,但并不孤单。

请与系统管理员联系,并为您提供建议,以在您操作平台上满足您的需求。


实际上,这几乎就像是缓存。 CSV数据的生命周期为3分钟,因此您只需要缓存api响应。 如果您使用能够提供某些逻辑(例如清漆)的缓存服务器,则可以相对容易地配置预取。 尝试找到一些只需要配置和重复使用的现有组件,而不用自己动手。

从这一行来看:

Note:
Retrieving and inserting data take about 10 seconds.

Cronjob将是最好的。 我认为访问者不会乐于每3分钟等待10秒钟的页面加载量。 如果我是唯一一个访问您的站点并且必须每三分钟一次重新执行脚本的人,该怎么办...

如果时间是1或2秒,则可以用另一种方法来完成。

如果我正确理解了您的Q,则可以考虑执行以下2个不同的任务:

a)获取数据并存储

b)处理数据

每3分钟执行一次a),并根据要求执行b)

现在,仅检查b)的延迟,然后考虑是否值得缓存结果集。

使它成为2个不同的任务将在一定程度上让您受益于避免获取多个文件的延迟问题带来的变化。 当您处理上一次成功获取的数据时,如果数据获取失败“此数据已存在3分钟以上”,它也可以使您退后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM