如何通过大量RSS提高应用程序的速度

时间:2014-02-24 04:20:21

标签: javascript php mysql apache mootools

早上好...

我的网络应用程序包含大量RSS源。流量低于

  • 从各个站点(使用PHP)获取RSS
  • 将其存储在DB(MySQL)
  • 阅读并将其显示给用户浏览器。

每隔一小时进行一次提取并存储到DB。

然后无论谁请求,都会向用户浏览器显示这些Feed。 (从DB读取并显示它。)

阅读过程并不那么快。换句话说,如果用户在同一页面上有20个Feed,则为每个Feed加载5个文章。它不是那么快,目前没有提供良好的用户体验。

我在8GB RAM VPS服务器上运行,技术 - PHP,MYSQL,MOOTOOLS,javascripts

然后为了加快速度,我尝试使用平面文件 - 从各个站点读取源并将其写入源文件。 (每个Feed的单独文件。)

然后阅读Feed文件并将其显示在用户浏览器上。在这种情况下,它比从DB读取要慢。

所以现在我没有选择..并且不知道我可以做些什么来提高我网站的速度。

如果有任何专家有任何建议,请告诉我。

此致 莫纳

1 个答案:

答案 0 :(得分:1)

我不认为自己是专家,但我至少可以给你一些尝试: 首先,您从自己的数据库中显示rss源是一件好事,如果任何rss源由于rss-provider的问题而失败,这应该可以保护您。 尽管如此,我建议你将rss feed的加载部分移动到一个单独的文件中,该文件在服务器端运行(并将其变成' cronjob')。这可以确保用户永远不会为重建数据源而烦恼。然后可以每小时调用此cronjob来刷新数据库。

下一步是找出流程最慢的地方,查询速度慢吗?或者你的脚本中只有一些缓慢的代码?

为了缩小原因,我建议您安装XDebug扩展(这里有适用于Windows的dlls:http://pecl.php.net/package/Xdebug)并将以下行添加到php.ini:     [XDebug] zend_extension = "C:\xampp\php\ext\php_xdebug.dll" xdebug.profiler_append = 0 xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1 xdebug.profiler_output_dir = "C:\xdebug" xdebug.profiler_output_name = "cachegrind.out.%t-%s" xdebug.remote_enable = 0 xdebug.remote_handler = "dbgp" xdebug.remote_host = "127.0.0.1" xdebug.trace_output_dir = "C:\xdebug"

安装完成后,将?XDEBUG_PROFILE添加到您的网址(请参阅:http://www.xdebug.org/docs/profiler)将生成一个可以使用WinCacheGrind(http://sourceforge.net/projects/wincachegrind/)检查的文件。这个程序可以缩小每个函数调用的执行时间。

我希望这可以帮助你:)

PS:确保禁用甚至更好地不在生产环境中安装XDebug,因为XDebug减慢了脚本...