只读XML数据时更新

Hel*_*ely 2 php xml rss

我能用PHP解析RSS - 我正在寻找的是能够只获得更新的内容,如果没有新的RSS更新,什么也不做.

例如,我有这个RSS文件,如果没有新内容,没有任何反应,但如果有新内容,我想向我的用户发送最新的RSS更新,而不是重新发送已有的内容.我正在解析并仅发送标题和链接.

我使用cronjob检查每小时的更新.我的问题是如何判断Feed现在已更新,与上一次不同?这是我用来阅读RSS 的PHP文件.我是否将最后一个内容写入文件并进行比较,还是有其他方法可以确定内容现在与上一个不同?

更新:我不得不复活这篇文章,因为我仍然试图让它发挥作用.虽然我接受了一些答案,但它们很难实现,例如哈希选项最初看起来是个好主意,但是当检查数千个RSS时,几乎不可能将它们全部哈希.

再一次,有人建议HTTP缓存 - 我找不到一个简单的演示,所以我几乎卡住了.

任何进一步的建议将受到高度赞赏.

Hen*_*pel 5

你可以用两种方式使用哈希:

  1. 为了便于更新 - 在请求更新时,您对整个Feed进行哈希处理,并将结果与​​上次的哈希进行比较 - 如果它们相同,则您知道Feed没有更改,甚至可以在解析之前停止.
  2. 识别更改 - 在解析时,您散列每个项目并将其与先前运行中存储的哈希值进行比较.如果它匹配一个,你知道你以前见过它.

如果有问题的Feed为其项目提供了guid,您可以通过存储guid <>哈希对来优化此过程.这样可以更快地进行比较,因为您只需将项目与已知的先前版本进行比较,而不是与之前的所有项目进行比较.

您仍然需要一些过期/清除机制来将存储的哈希值保持在边界内,但考虑到您只存储相对较短的字符串(取决于所选的哈希算法),您应该能够在获得性能之前保留大量的待办事项问题.