php get_headers timeout file_get_contents timeout 执行超时处理

2013-03-25 13:50:47 0  category: PHP记事本

1. get_headers() timeout超时处理


$urls = array(
'http://www.php-php.com/',
'http://www.163.com/',
'http://php.xlxz.org.la/'
);

function xlxzUrl($url) {
// 避免请求超时超过了PHP的执行时间

$executeTime = ini_get('max_execution_time');


ini_set('max_execution_time', 0);
$headers = @get_headers($url);
ini_set('max_execution_time', $executeTime);
if ($headers) {
$head = explode(' ', $headers[0]);
if (!empty($head[1]) && intval($head[1]) < 400)
return true;
}
}

foreach ($urls as $url) {
if ( xlxzUrl( $url ) )
echo $url . '有效' . '<br />';
else
echo $url . '无效' . '<br />';
}




2. get_headers() timeout 超时处理

 使用 stream_context_set_default() 函数 ( >php5.3 )


  1. stream_context_set_default(array(  

  2.   'http' => array(  

  3.       'timeout' => 1 //设置一个超时时间,timeout单位为秒  

  4.       )  

  5.   )  

  6. );  

  7. $headers = @get_headers( 'no.xlxz.org' );


3.  file_get_contents() timeout 超时处理


  1. $stream = stream_context_create(array(  

  2.   'http' => array(  

  3.       'timeout' => 1 //设置一个超时时间,timeout单位为秒  

  4.       )  

  5.   )  

  6. );  

  7. file_get_contents("http://xlxz.org/", 0, $strem);  


4. get_headers() timeout 超时处理使用CURL来达到相同功能


function get_headers_curl($url, $time = 15 )
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $time );
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$xlxz = curl_exec($ch);
curl_close( $ch );
$xlxz = explode( "\n", $xlxz );
return $xlxz;
}