2010-11-25 3 views
0

私はこの1つのバグのために終日自分自身を殺しています。私はあなたにこれについて可能な助けをどれくらい感謝しているかを十分に伝えることはできません。curl_execをクラッシュせずにCURLOPT_NOBODYを設定できません

基本的に、私は非常に単純なスクリプトを持っています。それはウェブサイトにログインし、ファイルのヘッダを見て、それがイメージタイプであるかどうかを確認してダウンロードします。その後、これを3回繰り返す。

ここでの問題は、curl_execが-no- errorsでスクリプト全体をクラッシュさせることなくCURLOPT_NOBODYを設定できないことです。 (私は呼び出すこともcurl_errorを得ることもできません!)CURLOPT_NOBODYからCURLOPT_NOBODYまで真実に行くことは不可能なようです。以下のループは1回実行されてからdie()されます。

このバグの原因は何でしょうか?ここで

はスクリプトです:

// Log into the Website 
curl_setopt($ch, CURLOPT_URL, 'http://myexample.com/login'); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
curl_exec($ch); 

// Begin the Loop for Finding Images 
for($i = 0; $i < 3; $i++) { 
    curl_setopt($ch, CURLOPT_URL, 'http://myexample.com/file.php?id=' . $i); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    $output = curl_exec($ch) or die('WHY DOES THIS DIE!!!'); 
    $curl_info = curl_getinfo($ch); 
    echo '<br/>' . $output; 

    // (Normally checks for content type here) Download the File 
    curl_setopt($ch, CURLOPT_URL, 'http://myexample.com/file.php?id=' . $i); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_NOBODY, false); 
    $filename = 'downloads/test-' . $i . '.jpg'; 
    $fp = fopen($filename, 'w'); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_exec($ch); 
    fclose($fp); 
} 

私は、Apache 2.2とPHPのバージョン5.2.13を実行していますよ。 助けていただきありがとうございます。私はどれくらいの助力をいただきましてありがとうございます。私は完全にここにこだわっている。カールライブラリを使用して、リソースを再利用しているESPの際、混乱しているよう:(

答えて

1

は、私には見える。

あなたは私はあなたのスクリプトを実行すると同じエラーを与えた

 
$ch = curl_init(); 
// do stuff with curl 
curl_close($ch); 
$ch = curl_init(); 
// another curl call 
curl_close($ch); 
$ch = curl_init(); 
// yet another curl call 
curl_close($ch); 

を行う必要がありますが、 curl_closeとcurl_initを追加して再初期化すると、問題を修正するように見えますが、これが受け入れられるかどうかは分かりません.fopen()を使ってHTTPダウンロードを行います。あなたがfopenでサポートされていないものを必要としない限り、

+0

私はloあなた。本当です。どうもありがとうございます!このバグは、私の週を完全に台無しにしてしまった。私は運が無かった原因、ランダムな出力、エラーメッセージがないことを調べることに何時間も時間を掛けました。ここで私は完全に間違ってカールを使用していた!誰かをとても幸せにしたことを知っていて、ここではとても幸せです!再度、感謝します :) – tsp3

関連する問題