1

PHP curlを使用して50以上のPDFファイルをダウンロードする適切な方法は何ですか?

以下は私が使用しているコードです:

$fp = fopen("test.pdf", 'w');        
$ch = curl_init();
            
curl_setopt($ch,CURLOPT_PROXY,"http://test:123");
curl_setopt($ch,CURLOPT_PROXYPORT,123);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt ($ch, CURLOPT_TIMEOUT, 500);
curl_setopt($ch,CURLOPT_URL,"http://download/test.pdf");
curl_setopt($ch, CURLOPT_FILE, $fp);
        
curl_exec($ch);
curl_close($ch);
fclose($fp);

問題は、2 ~ 3 個の PDF ファイルが正しくダウンロードされないことがあります (サイズが 0 ~ 1 バイト)。なぜ不安定なのか分かりますか?上記のコードに他に何かを含める必要がありますか?

4

1 に答える 1

0

一般に、Webリクエストは、ブラウザや良好な接続からでもかなり危険な場合があります。ここでは、接続を拒否するリモートサイトから、複数の場所からのphpファイルの同時実行まで、いくつかの問題が発生している可能性があります。見て:

http://www.php.net/manual/en/function.curl-error.php

curl_execで分析するために、エラーメッセージをどこかに出力しようとします。

接続の問題のようなものである場合は、再試行メカニズムを導入する必要があるかもしれません。スクリプトが複数の場所から並行して実行される可能性があるかどうかはわかりませんが、そうである場合は、http://phpを参照してください。 net / manual / en / function.uniqid.phpは、最初に適度に一意のファイル名を生成し、ダウンロードを試みてから、エラーが返されない場合にのみファイルを目的の宛先ファイルに移動します。それ以外の場合は、最大X回再試行します。

Curlの安定性に関しては、頻繁に使用しており、不安定であるとは証明されていませんが、バイナリデータを取得していません。エラーの検出とエラーメッセージからの出力によって、根本的な原因がここにあることが明らかになることを願っています。

于 2013-02-19T11:29:26.660 に答える