2010-10-06 57 views
0

我有一個php站點www.test.com。我如何添加異常?

在本網站的索引頁中,我通過以下php代碼更新另一個網站(www.pgh.com)數據庫。

$url = "https://pgh.com/test.php?userID=".$userName. "&password=" .$password ; 
$response = file_get_contents($url); 

但是,目前該網站www.pgh.com是down.So這也影響了我的網站 'www.test.com'。

所以,我怎麼可以將某些異常或別的東西添加到這個代碼,讓我的網站應該工作,如果其他網站已關閉

回答

3
$response = file_get_contents($url); 
if(!$response) 
{ 
    //Return error 
} 

PHP manual 添加超時:

$ctx = stream_context_create(array(
    'http' => array(
     'timeout' => 1 
     ) 
    ) 
); 
file_get_contents("http://example.com/", 0, $ctx); 

file_get_contents在失敗時返回false。

+0

如果遠程主機無法訪問,這將需要很長時間才能超時。 – 2010-10-06 16:03:42

+0

您可以通過傳遞具有較小超時的上下文來輕鬆修復該問題...... – Wrikken 2010-10-06 16:06:33

+0

@Wrikken即使是一秒鐘的最小超時,也會延遲頁面交付達此時間段,以便在停機期間發出每個請求。緩存是去這裏唯一的好方法。 – 2010-10-06 16:08:30

1

你有兩個選擇:

  • 添加超時使用stream_get_context()file_get_contents調用(手動具有很好的例子;文檔的timeout參數here)。這並不完美,因爲即使是一秒鐘的超時,在加載頁面時也會導致顯着的暫停。

  • 更復雜但更好:使用緩存機制。在使用cron job(如果您有權訪問其中一個)頻繁(例如,每15分鐘)調用一次的單獨腳本中執行file_get_contents請求。將結果寫入本地文件,您的實際腳本將讀取該文件。

相關問題