如何加速/分解多个部分的过程。 Rss,Curl,PHP

时间:2012-11-26 11:43:28

标签: php xml curl

我正在试验一些RSS阅读器/提取器。除了一件事,一切都很顺利。这非常慢。

让我解释一下:

  1. 我从数据库中获取RSS提要列表
  2. 我迭代此列表中的每个Feed,使用cURL打开它并使用SimpleXMLElement解析它
  3. 我使用给定的关键字检查这些Feed的描述和标题,以查看它是否已存在于数据库中。
  4. 如果不是我将它添加到数据库中。
  5. 现在我正在循环播放11个Feed。这给了我一个18秒的页面加载时间。这是在不更新数据库的情况下。当找到一些新文章时,它最多可达22秒(在localhost上)。

    在实时网络服务器上,我的猜测是,这将更慢,并且可能超出了php设置的限制。

    所以我的问题是,你有什么建议来提高速度..如果这是不可能的,那么最好的方法是将其分解为多次执行,比如一次说2个Feed?我想让它全部自动化,不想在每两次输入后点击。

    希望你们对我有一些好的建议!

    如果你想要一些代码示例,请告诉我并粘贴一些

    谢谢!

2 个答案:

答案 0 :(得分:0)

我建议您使用cronjob或守护进程,通过运行php脚本自动将提要与数据库同步。这将从用户的角度消除延迟。像每小时或任何适合你的方式运行它。

虽然首先,您应该尝试找出过程的哪些部分实际上很慢。没有代码,很难说出什么可能是错的。

可能的问题可能是:

  • 远程服务器(存储供稿)很慢
  • 您本地服务器的互联网连接
  • 您服务器的硬件
  • 显然是代码

答案 1 :(得分:0)

以下是一些建议。

  • 首先,将数据提取和处理与显示网页分开给用户。您可以通过设置在CRON作业中执行或作为守护程序存在的脚本(即连续运行)来放置提取和处理部分。
  • 其次,您可以在Feed提取之间设置一些合理的时间限制,这样您的脚本就不必每次都遍历每个Feed。
  • 第三,您应该考虑使用Feed解析库,如MagpieRSS,而不是SimpleXML。