所以我理解,一旦收到响应,file_get_contents将调用fclose()。但是,如果从未收到回复怎么办? php的默认超时是否会处理超时响应并关闭连接或连接是否保持打开状态?如果连接保持打开,我如何确保连接已关闭?或者我最好使用cURL?
答案 0 :(得分:2)
file_get_contents
使用常规stream context,您甚至可以将其作为第三个参数传递。您可以在那里设置timeout option。
$ctx = stream_context_create([
'http' ['timeout' => 10]
]);
$content = file_get_contents('http://...', FALSE, $ctx);
当您未指定http.timeout
上下文设置时,它将默认为default_socket_timeout
php.ini设置(默认情况下在大多数系统上设置为60秒)。