根据本地文件时差在PHP中获取RSS,而不是cron job


fetch rss in php according to local file time difference, instead of cron jobe

我在一个php脚本获取远程rss (xml)文件的本地副本,我已经知道,我可以做到这一点,使用像这样的cron作业
但我认为我可以做到这一点到目前为止更容易使用php行,比较服务器时间与本地复制的文件的时间戳,当调用php取回脚本。如果时间超过一个阈值,比如1小时,我将简单地重新获取远程xml,否则,处理本地xml副本。

这种方法有什么缺点吗?

看一下RFC 2616 - HTTP缓存。

你甚至不需要下载文件并检查修改时间

您可以使用HEAD方法轻松发送请求。(不是POSTGET)然后检查一些HTTP响应头,如:

  1. Etag

    您可以为每个实体保存ETag并将其保存在服务器的某个地方。然后检查ETag是否已更改,发送GET请求以检索新文件。

  2. Last-Modified

    使用此字段要容易得多。比较您的最后一次更新时间与该字段的值

  3. Expires

    你可以计划在未来的这个时候发送请求。

每个字段的存在取决于web服务器的配置和他们制作RSS生成器的方式。但通常这些字段中有一个是存在的。

也有替代方式检查内容的长度通过检查Content-Length字段与您的文件的长度存在于您的服务器上。