プロジェクト

全般

プロフィール

Backport(バックポート) #2772

サイドバナーのRSSリーダーで読み込めない時がある

Yuma Sakata約12年前に追加. 約12年前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2010-10-15
期日:
進捗率:

100%


説明

現象

(http://sns.openpne.jp/communityTopic/6318 より転記)

サイドバナーへRSSリーダーを登録しているのですが、
読み込み先によって、
画面の表示が「サーバーが混雑しています~」のような表示になってしまいます。

再現環境

サーバー:

  • CentOS Linux 5.5
  • MySQL version 5.0.91
  • php 5.2.13

OpenPNEのバージョン:

  • OpenPNE3.4.6.2

再現手順

こちらのRSSを登録する(8月28日23時ごろ)
http://video.baidu.jp/api/search?word=%E3%83%90%E3%82%A4%...

最初はずっと表示されていましたので、時間がたつと内容が変わりますので、表示されるようになるかもしれません。

サーバーのエラーログ:

PHP Fatal error: Uncaught exception 'sfException' with message 'Impossible to parse date "" with format "yyyy-MM-dd HH:mm:ss".'
 in /www/lib/vendor/symfony/lib/i18n/sfDateFormat.class.php:186\n
 Stack trace:\n
 #0 /www/lib/vendor/symfony/lib/i18n/sfDateFormat.class.php(219): sfDateFormat->getDate('', NULL)\n
 #1 /www/lib/vendor/symfony/lib/helper/DateHelper.php(60): sfDateFormat->format('', 'MM???dd???', NULL, 'utf-8')\n
 #2 /www/lib/helper/opUtilHelper.php(333): format_date('', 'MM???dd???', 'ja_JP', NULL)\n
 #3 /www/apps/pc_frontend/modules/default/templates/_rssBox.php(7): op_format_date('', 'XShortDateJa')\n
 #4 /www/cache/apache/pc_frontend/prod/config/config_core_compile.yml.php(3810): require('...')\n
 #5 /www/lib/vendor/symfony/lib/view/sfPartialView.class.php(110): sfPHPView->renderFile('...')\n
 #6 /www/lib/vendor/symfony/lib/helper/PartialHelper.php(155): sfPartialView->render()\n
 #7 /var/www/r in /www/lib/vendor/symfony/lib/i18n/sfDateFormat.class.php on line 186

原因

規定外のRSSを受信した場合などに、パースに失敗し例外により処理が中断されるため。

修正内容

ガジェット側ですべての例外を catch して、適切な表示になるように修正するべきです。

具体的には、note-3 にあるように

diff --git a/apps/pc_frontend/modules/default/actions/components.class.php b/apps/pc_frontend/modules/def
index 097703c..ad79046 100644
--- a/apps/pc_frontend/modules/default/actions/components.class.php
+++ b/apps/pc_frontend/modules/default/actions/components.class.php
@@ -95,11 +95,17 @@ class defaultComponents extends sfComponents

   public function executeRssBox()
   {
-    $fetcher = new opRssFetcher('UTF-8');
-    $this->result = @$fetcher->fetch($this->gadget->getConfig('url'), true);
-    if ($this->result)
+    try
+    {
+      $fetcher = new opRssFetcher('UTF-8');
+      $this->result = @$fetcher->fetch($this->gadget->getConfig('url'), true);
+      if ($this->result)
+      {
+        $this->result[1] = array_slice($this->result[1], 0, 5);
+      }
+    }
+    catch (Exception $e)
     {
-      $this->result[1] = array_slice($this->result[1], 0, 5);
     }
   }
のような変更で十分かと思われます。


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1684: サイドバナーのRSSリーダーで読み込めない時がある Fixed(完了) 2010-10-15

関係しているリビジョン

リビジョン cd3f99d4 (差分)
Naoya Tozuka約12年前に追加

catch all fatal exceptions thrown in RSS-reader gadget (refs #2772, BP from #1684)

BP from #1684
ceae6c568fb1c1ece7c60e1fa40f7aef80cfeee2

リビジョン a27e2686 (差分)
Yuya Watanabe約12年前に追加

(fixes #2772, BP from #1684) fixed to show sidebar also when RSSBox got an empty string

BP from #1684
1d880d6c61e8b6cf4c1200170c6eb0d3e01b0da9

Conflicts:

apps/pc_frontend/i18n/messages.ja.xml

履歴

#1 Yuya Watanabe約12年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

#2 Yuya Watanabe約12年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 a27e268634461594794e4483b165dc56635b90c8 で適用されました。

#3 Kousuke Ebihara約12年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#4 Yuma Sakata約12年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

他の形式にエクスポート: Atom PDF