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