Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
Image 如何检查网站上的图像更新?_Image_Logging_Web_Robots.txt - Fatal编程技术网

Image 如何检查网站上的图像更新?

Image 如何检查网站上的图像更新?,image,logging,web,robots.txt,Image,Logging,Web,Robots.txt,如何检查某个网站上的图像文件是否已从另一个网站更改,然后将其与旧版本一起存储 我用它来记录服务器上的图像。这只是最简单方法的一个简要说明。如果你想了解某个部分的更多细节,只需在评论中提问即可 解决方案示意图 下载图像,为其计算哈希,并将图像存储在文件系统中,将图像ID+哈希+文件系统路径(以及可能的其他信息,如请求时间)存储在数据库中 检查更新时,从数据库中获取相同ID的最后可用信息,如果哈希不相同,则图像未更新。如果使用加密散列(如MD5或SHA1)并且散列已更改,则几乎可以肯定图像也已更改

如何检查某个网站上的图像文件是否已从另一个网站更改,然后将其与旧版本一起存储


我用它来记录服务器上的图像。

这只是最简单方法的一个简要说明。如果你想了解某个部分的更多细节,只需在评论中提问即可

解决方案示意图
  • 下载图像,为其计算哈希,并将图像存储在文件系统中,将图像ID+哈希+文件系统路径(以及可能的其他信息,如请求时间)存储在数据库中

  • 检查更新时,从数据库中获取相同ID的最后可用信息,如果哈希不相同,则图像未更新。如果使用加密散列(如MD5或SHA1)并且散列已更改,则几乎可以肯定图像也已更改

  • 设置cronjob以定期运行脚本

  • 要下载图像,可以使用。MD5可通过、SHA1通过计算得出。用于储存和使用

    优化 有几种方法可以优化作业

    为了减少内存消耗,使用
    file\u put\u contents($path,$url)将文件直接下载到文件系统
    并且仅在此之后使用或计算哈希。这对于较大的图像更好。糟糕的是,您必须再次从文件系统读取数据来计算散列,所以我认为这会更慢

    旁注:在你知道它确实使代码变得更好之前,不要优化任何东西。始终测量之前、之后和比较

    如果服务器发送用于缓存的可靠标头,则可以进行另一个优化,以节省从远程服务器传输的数据。ETag是最好的,因为它应该基于文件的内容。如果不更改,则文件应相同。如果只想检查标题,请使用。要获取真正的头,您应该通过HEAD方法而不是GET发出justhttp请求。查看
    get_headers()
    manual了解更多信息。要在获取响应正文时检查标题,请使用
    file\u get\u contents()
    和特殊变量

    发出指示您在上次访问时缓存了图像的请求(如果自等进行了修改,则通过
    )也可以达到同样的目的

    礼仪和法律方面 我告诉过你怎么做的。现在我告诉你什么时候(不)

    不要滥用远程服务器。请记住,它的所有者需要花费一定的费用来保持它的正常运行,并且绝对不希望让它被脚本占用的时间超过可忽略的时间,也不希望传输太多的数据。根据目标服务器的类型和映像的大小调整轮询周期。适应估计的变化频率也是个不错的主意

    在存储其副本时,请确保获得图像版权持有人的同意。许可证发放可能是一件混乱的事情。小心点,否则你会惹麻烦的

    如果您计划以某种方式抓取图像,那么您可能会对标准感兴趣。这个文件可能会告诉你,你不受欢迎,你应该尊重它

    相关问题 有些关联更多,有些关联更少。人们主要希望观看HTML页面。这还有其他细节,这也是为什么我没有将这个问题标记为其中一个问题的重复


    图像ID+哈希+文件系统路径作为图像的名称?我是否只是简单地将$url替换为url?我真的没有太多的php经验,我还没有运行过那么多的网站。@tonkku107你真的需要使用php吗?我相信使用shell会更简单。我所说的“文件系统路径”是指图像的路径,包括其名称。您可以将整个图像存储到数据库中,但数据库并不是为存储大型二进制blob而构建的,因此这会降低它们的性能。此外,不希望在应用程序和数据库之间传输大量数据,因为数据库通常在单独的主机上运行。@tonkku107如果您在创建图像时知道图像名称,则图像名称可能是其内容哈希。否则,您可以选择一个临时名称,然后重命名它。如果您希望某些URL有很多版本,那么为每个关注的URL创建一个目录可能不是一个坏主意。不,我不需要使用php,但它在Web服务器上,我无法使用shell。数据量不大。。。图像大小仅为2KB。@tonkku107您是否有编程方面的一般经验?PHP学习起来很简单。你们知道HTTP是如何工作的吗?你们能使用数据库吗?我提供了所有你需要写你的图像更新观看程序。你还需要什么才能让我的答案被接受?