利用php的file_get_contents函数可以获取远程文件的内容,虽然效率可能比curl低点,但是好处就是足够简单而且安全。
前言
前几日,云落分享了一个获取远程文件类容的方法,因为是来自我的实际应用,所以还不错,但是发现了一些不足的地方,今天重新写一下斌切丰富一下内容。
代码分析
先贴一下前几天的代码
<?php $url = "http://git.oschina.net/yunluo/API/raw/master/notice.txt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $notice = curl_exec($ch); echo $notice; ?>
这段代码会直接使用curl显示文件内容,但是问题来了,因为curl是php的扩展,有的主机为了安全会金庸curl的,宁外php本地调试的时候也是关闭curl的,所以会发生报错,所以这段代码是不可取的,所以云落对他重新改写了
<?php if (function_exists('curl_init')) { $url = "http://git.oschina.net/yunluo/API/raw/master/notice.txt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $dxycontent = curl_exec($ch); echo $dxycontent; } else { echo '汗!貌似您的服务器尚未开启curl扩展,无法收到来自云落的通知,请联系您的主机商开启,本地调试请无视'; } ?>
修改后的版本是对curl扩展做一个判断,看看服务器到底有木有打开curl扩展,如果打开了,就直接显示文件,如果没打开就显示一段提示文字。
虽然修复了问题,但是又有一个问题来了,我只是显示一段文字而已,我也不是是用什么做什么大事的,所以我为什么要写那么多的代码呢??
经过一些瞎掰的检测,发现file_get_contents获取远程文件内容的速度不比curl慢,在一些文件较少的情况下可能还比curl扩展要快得多,所以我又重写了代码
<?php echo file_get_contents( "http://git.oschina.net/yunluo/API/raw/master/notice.txt" ); ?>
我了个大擦。这次的代码好少啊。。。。。
-- 完 --
参考下,两个有用的函数get√
file_get_contents 用16进制打开效率会更高,不过还不咋地
curl感觉好用点。
@小幻 curl需要扩展支持,某些主机会报错
不错的文章