0

基本的に、ページに他の場所からのフィードを含めたいユーザーに提供するこのモジュールがあります。私は汗をかきません。問題は、Zend Feed が致命的なエラーと同じようにクラッシュしてページ全体が焼き尽くされるため、ユーザーがフィード リンクを手で誤って処理するたびに、手動でモジュールを存在から削除する必要があることです。通常、次のようなコード ブロックが期待されます。

try { // Test piece straight off the Zend tutorial
    $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import failed
    echo "Exception caught importing feed: {$e->getMessage()}\n";
    exit;
}

.. 「httn://rss.grrllarrrlll.aarrg/Slashdot/slashdot」と入力して、「404」または「なんてこった」の行に沿って何かを言うと、動作します。いいえ、死にます。クラッシュして死ぬ。クラッシュして燃えて死んで、幸せなトライキャッチの方法論を完全に無視しています。

では基本的に、on feedfetch を記述する必要がありますか、それとも Zend のスリップに対する簡単な救済策はありますか?

追加されたログ:

    exception 'Zend_Http_Client_Adapter_Exception' with message 'Unable to Connect to tcp://www.barglllrragglll:80. Error #10946: ' in /library/Zend/Http/Client/Adapter/Socket.php:148
#0 /library/Zend/Http/Client.php(827): Zend_Http_Client_Adapter_Socket->connect('www.barglllrragglll...', 80, false)
#1 /library/Zend/Feed.php(284): Zend_Http_Client->request()
...... Trace etc ....
4

3 に答える 3

2

好奇心から、他の種類の例外をキャッチしようとしましたか? だけでなくZend_Feed_Exception

おそらく、「フェッチ」フェーズで何らかの 404 エラーが発生すると、別の例外がスローされるのでしょうか? Zend_Http_Client( ?のような別のコンポーネントに依存しているため)

また、error_reportingエラーが報告されることを確認するために、レベルをチェックしましたか? たぶん、どこかのログファイルにありますdisplay_errorsOff


余談ですが、実際にはあなたの質問への回答ではありませんが、Zend_Feedいくつかの欠点があります(フィードの形式に応じて異なる種類のデータを返すなど)。たとえば、RSS と ATOM など)

Zend Framework 1.9 (現在、プレビュー版またはアルファ版としてのみ利用可能であるため、本番環境では使用しないでください!)から、Zend_Feed_ReaderRSS フィードと ATOM フィードの両方を使用する場合により便利なコンポーネントが追加されます。

詳細については、次を参照してください。


ログを追加した後に編集する

の場合、Feed自体Zend_Feedには問題がないため、関連する Exceptionはスローされません。Zend_Feed

ここでの問題は、間違った URL のような別の問題です。データの取得に失敗し、分析できません。Zend_Feed例外が-関連ではなく-関連である理由を説明していますZend_Http_Client

他の例外処理コードを追加することもできます。このようなもの :

try { // Test piece straight off the Zend tutorial
    $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import failed
    echo "Exception caught importing feed: {$e->getMessage()}\n";
    exit;
} catch (Zend_Http_Client_Exception $e) {
  echo "There is something wrong with the URL you provided for the feed";
  exit;
} catch (Exception $e) {
  echo "There is something wrong, we don't know what...";
  exit;
}

こちらです :

  • フィードが有効でない場合は、ユーザーに伝えることができます
  • HTTP 関連の問題がある場合は、ユーザーにも伝えることができます
  • 考えもしなかった別の問題がある場合でも、クラッシュしません
于 2009-07-28T10:48:24.973 に答える
1

の線に沿って何かはどうですか

$file = file("http://rss.grrrrrrrl..."); $rss = Zend_Feed::importString($file);

于 2009-07-28T10:19:59.883 に答える
0

ねえ、あなたは正しい例外タイプをキャッチしていません。キャッチしてみてください

Zend_Http_Client_Adapter_Exception

または一度に:

キャッチ (例外 $e)

ところで、toString メソッドがあるので、getMessages を必要とせずに $e をエコーすることができます。

于 2009-07-29T07:04:49.637 に答える