2009-11-25 109 views
0

如何循環播放外部網站陣列,並且如果其中一個網站沒有響應,不會發生災難性故障?請看下面的僞代碼:故障安全循環槽陣列

$urls = array(list of urls); 
foreach ($urls as $url) { 
    try { 
     $page = get_page($url); 
     $title = $page['title']; 
    } catch(Exception $e) { 
     continue; 
    } 
} 

我希望發生的是嘗試和加載頁面,如果沒有響應,然後跳到列表中的下一個URL。問題是$ title被設置爲空白。我嘗試在一個函數中對代碼進行分組,但我仍然無法獲得錯誤異常以跳過整個代碼塊。

回答

0

你的代碼應該以這種方式工作(除了不需要「繼續」)。我猜這個錯誤是在別的地方。

例子:

$a = array(1, 2, 3, 4); 
foreach($a as $b) { 
try { 
    echo $b; // this line works 
    throw new Exception; 
    echo 'NOT THERE'; // this line won't run 
} catch(Exception $e) { 
} 
} 
0

只是一個快速的注意,因爲我不知道你的「get_page」功能是幹什麼

<?php 

$urls[] = "http://www.google.com"; 
$urls[] = "http://www.lkhfsklhqiouhqwre.com"; 

foreach ($urls as $url) { 
    $handle = fopen($url, "r"); 

    if ($handle) { 
     $contents = stream_get_contents($handle); 
     // process the contents 
    } else { 
     echo "$url Failed to load\n"; 
    } 
    fclose($handle); 
} 
?> 
+0

謝謝,我將如何解決這個問題,我想第一個答案回答這個問題,但第二個是更好的方法。 – breez 2009-11-25 14:43:48