在PHP源码的扩展库中默认存在curl的扩展,编译就可以直接安装。但之前测试过一个远程xml获取代码,使用了curl函数,在刚搭建的vps上无法运行。通过探针查看,发现curl扩展并没有安装上去。
本来可以重新在apache上添加curl扩展的,但是考虑到以后有些主机并不一定支持curl,为了增加程序的兼容性,于是对源代码做了如下更改:
function malu_get_url_content($getxml) {
if(function_exists('curl_init')) {
$ch = curl_init();
$timeout = 60; //curl超时时间
curl_setopt ($ch, CURLOPT_URL, $getxml);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo " (curl) ";
} else {
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 60 //设置一个超时时间,单位为秒
)
)
);
$file_contents = file_get_contents($getxml, 0,$ctx);
echo " (file_get) ";
}
return $file_contents;
}
以上函数直接使用,$getxml变量传递URL信息,返回变量$file_contents传出获取到的内容。
对于判断函数还可以这样写:
if(function_exists('file_get_contents')) {
优先判断是否支持file_get_contents,这样一来可以根据需要自己调整。两函数均进行了超时控制,防止远程链接失效而导致服务器负载过大。