Neden bir besleme misentered olduğunda ben Zend Yem bekliyoruz istisna almıyorum?

3 Cevap php

Temelde, biz başka bir yerde kendi sayfalarında bir besleme eklemek istediğiniz bizim kullanıcılara sunduğu bu burada modülü var. Ben harika çalışıyor, hayır ter. Sorun, kullanıcıların ellerinde besleme bağlantısını hor zaman elle varlığından modülünü çıkarmak zorunda olduğunu herhangi bir ölümcül hata gibi Zend Yem çöker ve yanıklar tüm sayfa çünkü. Normalde, bir gibi bir kod bloğu beklenir ..

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;
}

Ben 'httn :/ / rss.grrllarrrlll.aarrg / Slashdot / slashdot' girmek demek bir şey "404" çizgisinde ya da "Ne bok" olsaydı .. dAVRANIşLARI olacaktır. Hayır ölür. Bu çöker ve ölür. Bu çöker ve yanıklar ve ölür, tamamen orada tüm bu mutlu TryCatch methology görmezden.

Yani temelde, biz feedfetch bizim yazmak zorunda ya zerdüştlerin kayma için herhangi bir basit çare var mı?

Eklenen günlüğü:

    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 ....

3 Cevap

Sadece meraktan soruyorum, sen hariç başka türlü alıcı denemek mi? yani, sadece Zend_Feed_Exception?

404 bir tür hata "getiriliyor" aşamasında varsa, belki, başka bir istisna atar? (Çünkü gibi, başka bir bileşenin güvenmek Zend_Http_Client?)

Ayrıca, hataları rapor olacağını emin olmak için, sizin error_reporting seviyesini kontrol ettiniz mi? Belki bir yerlerde bazı günlük dosyası, display_errors ise Off?


As a sidenot, and not really an answer to your question, but Zend_Feed has some drawbacks (like returning different kind of data depending on the feed's format -- RSS vs ATOM, for instance).

Zend Framework 1.9 ile başlayarak (right now, it's only available as a pregörünüm or alpha version, so don't using it in production !), RSS ve ATOM Feeds consumming zaman daha yararlı olmalıdır Zend_Feed_Reader bileşeni, orada olacak.

Detaylı bilgi için, bkz:


Düzenle after you added the log

Için Zend_Feed, orada itself Yem ile hiçbir sorun, bu yüzden bir Zend_Feed ile ilgili özel durum atmak değil.

Burada var sorun yanlış URL'ye gibi, başka biri: bu veri alma başarısız olur, ve bunu analiz etmek değil; Bu istisna Zend_Feed ile ilgili değil açıklıyor, ama Zend_Http_Client ile ilgili.

Bazı diğer istisna işleme-kodu eklemek isteyebilirsiniz; böyle bir şey:

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;
}

Bu şekilde:

  • Besleme geçerli değilse, kullanıcıyı söyleyebilirim
  • HTTP ile ilgili bir sorun varsa, siz de kullanıcıyı söyleyebilirim
  • Eğer düşünmek değil başka bir sorun varsa, yine çökmez

Nasıl çizgisinde bir şey hakkında

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

?

Hey, yakalamak için doğru istisna tipi deneyin yakalamak değil

Zend_Http_Client_Adapter_Exception

veya hepsini birden:

catch (Exception $ e)

Sadece $ e getMessages gerek echo böylece btw bir toString yöntemi vardır.