file_get_contents是打工文件或URL获取内容的方法,比其稳定的还有curl_get_contents

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了file_get_contents是打工文件或URL获取内容的方法,比其稳定的还有curl_get_contents相关的知识,希望对你有一定的参考价值。

相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致php进程占用CPU达100%,因此这个函数就诞生了
分享一个实际在用的函数:
复制代码 代码如下:

/*比file_get_contents稳定的多!$timeout为超时时间,单位是秒,默认为1s。*/
function curl_get_contents($url,$timeout=1) {
$curlHandle = curl_init();
curl_setopt( $curlHandle , CURLOPT_URL, $url );
curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout );
$result = curl_exec( $curlHandle );
curl_close( $curlHandle );
return $result;
}
$hx = curl_get_contents(‘http://www.jb51.net‘);

相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致PHP进程占用CPU达100%,因此这个函数就诞生了。curl的一些常识介绍
保留原file_get_contents函数的原因是当读取本地文件时,用原生的file_get_contents显然更合适。
另来自张宴的file_get_contnets的优化,具体可看:http://www.jb51.net/article/28030.htm
同样是设置超时时间来解决这个问题。如果没装curl,就必须得用这个方式了。
复制代码 代码如下:

$ctx = stream_context_create(array(
‘http‘ => array(
‘timeout‘ => 1 //设置一个超时时间,单位为秒
)
)
);
file_get_contents("http://www.jb51.net/", 0, $ctx);

另外,据不完全测试,使用curl获取页面比用file_get_contents稳定的多。

以上是关于file_get_contents是打工文件或URL获取内容的方法,比其稳定的还有curl_get_contents的主要内容,如果未能解决你的问题,请参考以下文章

php file_get_contents函数分段读取大记事本或其它文本文件

警告:file_get_contents(inc-star-rating.php?id=10) [function.file-get-contents]:打开流失败:没有这样的文件或目录

php file_get_contents 和 curl_exec 不适用于外部文件

file_get_contents() 如何修复错误“无法打开流”、“没有这样的文件”

PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题

file_get_contents() 不工作