PHP中使用file_get_contents函数调用策汇API接口时很慢如何解决?使用curl并设置gzip压缩方式传输源码。
问题
PHP中使用file_get_contents函数调用策汇API接口时很慢如何解决?使用curl并设置gzip压缩方式传输源码。
解答
API接口都是支持gzip压缩数据传输的,如果数据量大(大于几十KB)快速调用,建议使用gzip压缩方式传输。
1、PHP中使用file_get_contents函数调用API接口时很慢如何解决?
PHP的内置函数file_get_contents默认是不支持gzip压缩方式的。PHP官网上说可通过创建一个stream头来设置操作,没有仔细研究。
2、使用curl并设置gzip压缩传输代码如下:
function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 20 );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt($curl, CURLOPT_HEADER, false );
// 使用gzip压缩传输数据
if($gzip){
curl_setopt($curl,CURLOPT_ENCODING,"gzip");
}
$content = curl_exec($curl);
curl_close($curl);
return $content;
}
调用: echo curl_get("http://api.fxchs.com/forex/wc10/demo/jkline.aspx?period=5&symbol=xauusd",true);
实际操作来看,比如使用gzip压缩方式执行时间为0.5秒,普通的方式执行需要6秒左右,效果还是很明显的。
