Php fopen()偶尔会失败
我知道fopen()的失败在这里已经被大量讨论过了,但我的问题似乎有一个独特的转折点:fopen()失败的次数可能是四分之一,其他的时候它工作得很好。我得到以下错误:Php fopen()偶尔会失败,php,fopen,Php,Fopen,我知道fopen()的失败在这里已经被大量讨论过了,但我的问题似乎有一个独特的转折点:fopen()失败的次数可能是四分之一,其他的时候它工作得很好。我得到以下错误: Warning: fopen(http://download.finance.yahoo.com/d/quotes.csv?s=0005.HK&f=nl1c1p2v&e=.csv) [function.fopen]: failed to open stream: HTTP request failed! in [.
Warning: fopen(http://download.finance.yahoo.com/d/quotes.csv?s=0005.HK&f=nl1c1p2v&e=.csv)
[function.fopen]: failed to open stream: HTTP request failed! in [...] on line 4
事实上,这种情况并没有系统性地排除主机服务器端的大多数问题源,这可能是由于我正在开发的服务器Yahoo Finance造成的吗 改用curl lib
改用curl lib
使用卷曲。它将返回比fopen更好的诊断结果-获取“false”对于找出问题是完全无用的:“哦,看,发生了错误!”与@Marc B一致。当您使用
curl\u exec()
并检测到错误时,您可以调用curl\u errno()
它将返回更详细的错误原因,以查看人工字符串调用curl\u error()
use curl。它将返回比fopen更好的诊断结果-获取“false”对于找出问题是完全无用的:“哦,看,发生了错误!”与@Marc B一致。当您使用curl\u exec()
并检测到错误时,您可以调用curl\u errno()
它将返回更详细的错误原因,以查看人工字符串调用curl\u error()
function get_cURL($p_url)
{
$ch = curl_init($p_url);
$agent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3";
$header[0] = "Accept: text/xml,text/csv,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
// grab URL and pass it to the browser
curl_setopt($ch, CURLOPT_URL, $p_url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$buffer = curl_exec($ch);
$this->info = curl_getinfo($ch);
$this->error = curl_error($ch);
curl_close($ch);
return $buffer;
}