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秒左右,效果还是很明显的。