2012-09-07 91 views
0

Im做一個簡單的web應用的是,用來顯示一些服務器的狀態,包括在服務器(ON/OFF)的狀態。要檢查我使用funciotion「urlExists」因此,如果它返回我一個真正的我投的那個服務器聯機,脫機在其他情況下,服務器的狀態。PHP urlExists限制時間

當我檢查一臺服務器,如果是網上的函數執行速度快,但是當我檢查服務器脫機時間過長,檢查下一個。所以我想限制功能的執行時間是這樣的:

... 
set_time_limit(1); 
$exists = false; 
$exists = urlExists($url); 
set_time_limit(); 
... 

但使用的set_time_limit的執行時間是相同的()。我不知道的set_time_limit是用來做這樣的事情,但我是成立的唯一的事。任何想法如何我可以做到這一點?

在此先感謝。

+1

看看cURL:http://php.net/manual/en/book.curl.php – HappyTimeGopher

+0

你是怎麼用來實際調用URL的(即'urlExists()'中發生了什麼)?如果使用cURL之類的東西,您可以設置請求的時間限制。 –

回答

2

試試這個功能使用捲曲:

function urlExists($url) 
{ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); 

    $exists = curl_exec($ch); 
    curl_close($ch); 

    // If exec returns boolean, it's false, therefore the server is down/url doesn't exist. 
    return !is_bool($exists); 
} 

正如你所看到的,你可以設置爲與CURLOPT_CONNECTTIMEOUT的連接時間限制。 這樣你就不需要set_time_limit()函數;

+0

Thnks運行完美! –