file_get_contents超时的问题

请有使用file_get_contents的同学在调用前进行设置 ini_set(‘default_socket_timeout’, $seconds); 当PHP读取php.ini配置文件中的所有设置信息的同时,它提供了采用ini_set()函数根据per-scrīpt原则更改这些设置的功能。此函数接收两个参数:需要调整的配置变量名,以及变量的新值。

例如,在某脚本出现时增加最大执行时间(maximum execution time):

<?php

ini_set('max_execution_time', 600)
ini_set('display_errors','1′);//php默认是不显示错误的,这样可以把错误设置打开
// more code

?>

这样的设置将仅仅影响被设置的脚本。一旦脚本执行完毕,该变量将自动恢复到原始值。

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

< ?php
$file_contents = file_get_contents('http://www.ccvita.com/');
echo $file_contents;
?>

换成curl函数的使用示例:

< ?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://www.ccvita.com');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

echo $file_contents;
?>

file_get_contents来post数据:

HTTP POST with file_get_contents

$post_variables = array('usernamed' => 'rasmus');

$content = http_build_query($post_variables);

$content_length = strlen($content);

$options = array(

    'http'=>array(

        'method'  => 'POST',

        'header'  =>

              "Content-type: application/x-www-form-urlencoded\r\n" .  

              "Content-length: $content_length\r\n",

        'content' => $content
    )

);
$context = stream_context_create($options);

$index = file_get_contents('http://www.example.com/index.php', false, $context);