Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每3分钟运行一次cron作业,或者如果已经过了3分钟,那么只根据请求执行php脚本,这样更好吗?_Php_Mysql_Cron - Fatal编程技术网

每3分钟运行一次cron作业,或者如果已经过了3分钟,那么只根据请求执行php脚本,这样更好吗?

每3分钟运行一次cron作业,或者如果已经过了3分钟,那么只根据请求执行php脚本,这样更好吗?,php,mysql,cron,Php,Mysql,Cron,这里我的问题很简单:我有一个php脚本,它从不同的api检索大量csv文件,将它们存储在数据库(MySQL)中,并将它们显示给我的用户。我必须每3分钟查询一次这些api以获取重要数据只使用最后的数据,不需要获取历史数据。 如果没有人在这里查看页面,我担心的是避免查询这些api并在数据库中插入大量数据。 这不是速率限制的问题,只是考虑减少无用的请求和插入数据库 我的问题如下: 每3分钟使用一次cron作业来检索数据并存储它们是否更好 如果页面已加载且自上次更新以来已过3分钟,是否运行php脚本

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

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

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

我的问题如下:

  • 每3分钟使用一次cron作业来检索数据并存储它们是否更好
  • 如果页面已加载且自上次更新以来已过3分钟,是否运行php脚本
在第一种情况下,每个用户都将拥有最后一个值,即使没有人在这里看到这些值,数据也将始终被检索。
在第二种情况下,每3分钟一个用户将检索所有用户的数据(因此他的页面加载速度将比其他用户稍慢),但如果没有人访问该站点,则不会存储无用的数据

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

谢谢你的见解

根据这条线判断:

Note:
Retrieving and inserting data take about 10 seconds.
克朗乔布将是最好的。我不认为访问者会乐意每3分钟等待10秒的页面加载。如果我是唯一一个访问你网站的人,并且不得不每3分钟一次又一次地修改你的脚本,那该怎么办

如果时间是1秒或2秒,则可以用另一种方式进行。

根据这行判断:

Note:
Retrieving and inserting data take about 10 seconds.
克朗乔布将是最好的。我不认为访问者会乐意每3分钟等待10秒的页面加载。如果我是唯一一个访问你网站的人,并且不得不每3分钟一次又一次地修改你的脚本,那该怎么办


如果时间是1或2s,那么你可以用另一种方式来做。

< P>如果我正确地理解了你的Q,你可以考虑做这2个不同的任务:

a) 获取数据并存储它

b) 处理数据

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

仅检查B上的延迟,然后考虑是否值得缓存结果集。


将它设置为两个不同的任务将在一定程度上使您免受获取多个文件的异常延迟问题的影响。当你处理上次上次成功取回的数据时,它也会给你带来“数据超过3分钟”的回落。

< P>如果我正确地理解了你的Q,你可以考虑做这2个不同的任务:

a) 获取数据并存储它

b) 处理数据

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

仅检查B上的延迟,然后考虑是否值得缓存结果集。


将它设置为两个不同的任务将在一定程度上使您免受获取多个文件的异常延迟问题的影响。在处理上一次成功获取的数据时,如果数据获取失败,“此数据已超过3分钟”,它还可以为您提供一个后援。

您应该同时执行这两种操作

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

如果你的网站上有流量,你需要保持数据的最新,但是三分钟的时间对你来说已经足够了

因此,如果在最后X分钟内有活动,则需要在所有三分钟内提取数据

如果没有,第一个用户将看到一条消息,说明正在准备数据,这只需要10秒钟。然后,您可以自动刷新网站

当前不存在能够在您的计算机上立即执行此处理的系统。Cron可以帮助您完成工作,但不是独自一人

请与您的系统管理员联系,并让您对平台上的可用内容提出建议,以满足您的需求



实际上,这看起来很像缓存。CSV数据的生命周期为3分钟,因此您只需要缓存api响应。如果使用能够提供某些逻辑(如varnish)的缓存服务器,则可以相对轻松地配置预取。尝试查找一些只需配置和重复使用的现有组件,而不是滚动自己的组件。

您应该将两者结合使用

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

如果你的网站上有流量,你需要保持数据的最新,但是三分钟的时间对你来说已经足够了

因此,如果在最后X分钟内有活动,则需要在所有三分钟内提取数据

如果没有,第一个用户将看到一条消息,说明正在准备数据,这只需要10秒钟。然后,您可以自动刷新网站

当前不存在能够在您的计算机上立即执行此处理的系统。Cron可以帮助您完成工作,但不是独自一人

请与您的系统管理员联系,并让您对平台上的可用内容提出建议,以满足您的需求



实际上,这看起来很像缓存。CSV数据的生命周期为3分钟,因此您只需要缓存api响应。如果使用能够提供某些逻辑(如varnish)的缓存服务器,则可以相对轻松地配置预取。尝试查找一些只需配置和重复使用的现有组件,而不是滚动自己的组件。

使用cron作业看起来更可靠的解决方案取决于您的流量+检索数据所需的时间。你能量化这些数据吗?检索数据并将其插入数据库需要10秒钟。流量非常不规则,大约1000个独立ip/天:上午9点到下午4点(美国访客)很多,有些