2014-02-24 123 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

相關問題