2014-02-24 60 views
1

早上好...如何增加大量的RSS应用程序的速度

我有很多RSS提要的Web应用程序。流量低于

  • 获取来自各网站的RSS(使用PHP)
  • 储存于数据库(MySQL的)
  • 读它,并显示给用户的浏览器。

提取是在每隔一小时的时间间隔完成并存储到数据库。

然后谁请求,显示这些饲料给用户浏览器。 (从数据库读取并显示)

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

我8GB内存VPS服务器上,科技上运行 - PHP,MYSQL,MooTools的,JavaScript的

然后使之快,我尝试使用平面文件 - 读取从各自的网站供稿并将它写入Feed文件。 (每个Feed的单独文件)。

然后阅读提要文件并将其显示在用户浏览器中。在这种情况下,它比从数据库中读取要慢。

所以,现在我没有选择..并没有线索我可以做什么来提高我的网站的速度。

如果有专家有任何建议,请让我知道。

问候, 蒙娜丽莎

回答

1

我不会认为自己是一个专家,但我至少可以给你出头尝试: 首先,它就是你展示RSS从自己的数据库饲料一件好事,这应该保护你,如果任何rss源由于rss提供者的问题而失败。 尽管如此,我建议你将rss提要的加载部分移动到一个单独的文件中,该文件运行服务器端(并使其成为'cronjob')。这可以确保用户永远不会对重建数据源感到困扰。然后可以每小时调用一次这个cronjob来刷新你的数据库。

下一步是找出进程最慢的地方,有没有缓慢的查询?或者脚本中只有一些缓慢的代码?

要缩小的原因,我真的建议你安装Xdebug扩展(也有适用于Windows这里准备dll文件: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添加到您的url(请参阅:http://www.xdebug.org/docs/profiler)将生成一个文件,您可以使用WinCacheGrind(http://sourceforge.net/projects/wincachegrind/)检查该文件。这个程序可以缩小每个函数调用的执行时间。

我希望这可以帮助你:)

PS:一定要禁用,甚至更好,而不是在生产环境中安装了XDebug,因为XDebug的减慢你的脚本...

+0

我会也增加了答案,你应该考虑排队和缓存你的请求/结果。 关键字:redis,rabbitmq,xcache,永久mysql连接... – lovethebomb

+0

谢谢Royarisse的帮助和很好的解释。 – SmartDev

相关问题