检查大量Feed时如何处理慢速服务器回复?

时间:2016-02-17 18:35:56

标签: php rss

如果有新项目,我需要使用PHP检查几百个RSS / Atom提要并更新MySQL数据库。该脚本由cron deamon以一定的时间间隔运行。

我遇到的问题是托管这些源的许多服务器回复速度很慢,所以我试图增加我的PHP脚本的超时,但结果是现在脚本有时会运行几分钟,我理解不理想,它最终仍然停止处理,并没有完成所有的提要。

我知道并非所有供稿都已完成,因为数据库中的最后一个条目永远不会更新,即使这些供稿也是如此。我没有收到邮寄给我的错误,但是通过查看订阅源并查看数据库来手动检查。

处理此问题的最佳(或良好)做法是什么?

1 个答案:

答案 0 :(得分:0)

  1. 从终端
  2. 运行它
  3. 将每个Feed视为自己的工作/任务
  4. 确保这些工作/任务不会相互阻挡。
  5. 实现(3)在多个线程/进程中运行PHP脚本(每个进程一个)
    1. 使用排队系统来管理工作(ZeroMQ,RabbitMq,Gearman ......)
    2. 使用PHP或libs来管理工作( http://php.net/manual/en/book.pcntl.phphttp://reactphp.org/
    3. 或使用排队系统和PHP工具。
  6. 所以最后你会得到一个PHP脚本/工作者,它一次只能抓取并处理一个feed。还有什么可以告诉它要抓什么东西。

    通过这种方式,您可以知道哪些Feed失败了,或者花了太长时间而没有阻止其余的。