Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php fopen()偶尔会失败_Php_Fopen - Fatal编程技术网

Php 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 [.

我知道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 [...] 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;
}