由于休息请求,我试图获取 xml,但行为总是很奇怪。
如果我在真正的浏览器中尝试它,我总是得到与倒数第二个请求相关联的结果,而不是请求的结果last/current
,可能是服务器中的缓存问题......无论如何我试图通过发出两个请求来解决这个问题代码中的时间,但这里的行为更加不稳定,它返回与先前请求相关的结果随机次数,也许幸运的是它最终返回了请求的真实 xml(我的意思是,如果我进行请求循环)。
我认为在sleep()
功能请求之间设置一些时间可以解决问题,但没有。
我还尝试使用浏览器标头来发出 curl 请求……但仍然是同样的问题。为什么在浏览器中第二次起作用而在 curl 中却不起作用?我必须说,我请求的 url 包含空格,我用'%20'
.. 更改了这些空格。我不知道还能做什么!
这是 curl 请求:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_AUTOREFERER,1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$header=array(
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: es-es,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 115',
'Connection: keep-alive',
);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
$response = curl_exec($ch);
curl_close($ch);