Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
Algorithm 监视文件更改的算法_Algorithm_Http_Curl_Pattern Matching_Batch Processing - Fatal编程技术网

Algorithm 监视文件更改的算法

Algorithm 监视文件更改的算法,algorithm,http,curl,pattern-matching,batch-processing,Algorithm,Http,Curl,Pattern Matching,Batch Processing,当远程站点上的特定文件发生更改时,监视并找到最佳时间的好方法是什么?我想通过查找文件通常何时更新的模式来限制我们下载文件的频率 我们定期下载数据在1Mb到200Mb之间的文件产品提要 其中有些文件每小时更新一次,有些每周几天更新一次,有些每月更新一次 这些文件并不总是在同一时间更新,但通常在某个时间段内会有一种模式 我们只想在知道文件已更改时下载这些文件 我们希望在文件更改后尽快下载这些文件 解决这个问题的一个简单方法是每小时使用HTTP HEAD请求检查文件,并在我们注意到上次修改的文件或内容

当远程站点上的特定文件发生更改时,监视并找到最佳时间的好方法是什么?我想通过查找文件通常何时更新的模式来限制我们下载文件的频率

我们定期下载数据在1Mb到200Mb之间的文件产品提要 其中有些文件每小时更新一次,有些每周几天更新一次,有些每月更新一次 这些文件并不总是在同一时间更新,但通常在某个时间段内会有一种模式 我们只想在知道文件已更改时下载这些文件 我们希望在文件更改后尽快下载这些文件 解决这个问题的一个简单方法是每小时使用HTTP HEAD请求检查文件,并在我们注意到上次修改的文件或内容长度发生变化时触发下载。不幸的是,我们不能依赖HTTP头,因为它们通常会丢失,或者没有显示文件的实际时间/大小。我们经常不得不下载整个文件,以确定它是否已更改

首先,我想我可以编写一个进程,每隔1、2、4、8。。。每次迭代时数加倍,直到发现文件已更改,然后继续使用该数字。这可能是可行的,但不是最优的

为了优化它一点,我想调整间隔数以找到一个最佳点。然后,各种各样的情况开始出现,我的想法都会失败——比如周末和公共假日,因为人们不在工作,所以文件无法更新。有一种模式,但也有例外

接下来,我开始阅读有关阶跃检测算法的书籍,很快我就意识到自己已经深不可测了。人们如何解决这些问题


我猜解决方案将涉及某种形式的数据历史,但我摸索着如何优化收集数据的算法以及如何导出模式。希望以前有人处理过。

您有权限在远程站点上运行脚本吗?没有。无法控制存储文件的任何站点。如果不下载要与之进行比较的内容,则无法进行控制。使用curl,您始终可以下载索引为常数N的文件的相同部分,并将其与以前下载的部分进行比较。如果文件已更改,您很可能会看到更改,因为从文件中添加或删除某些内容将导致其余数据被替换。明显的问题是,如果在索引后面添加了某些内容,您将看不到更改。因此,文件更改后,N应该被更改,这样它就可以下载文件的最末尾部分。谢谢,我会考虑这个策略。听起来很有用。这些文件通常是动态生成的,我怀疑如果我们每小时都请求一个代码片段的话,那就不太好了,因为源代码仍然需要生成整个文件。