1

Web サイトから大きな csv ファイルをダウンロードしようとしています。file_get_contents と file_put_contents を使用するという提案を見たことがありますが、ファイル サイズが大きいため、cURL とそのファイル ハンドル オプションを使用することを選択したため、データは PHP メモリではなくファイルに直接送信されます。

ただし、ファイル全体が常にダウンロードされるとは限らず、使用時にアクセスする方法がわからない応答ヘッダーを使用せずにファイル全体がダウンロードされたことを確認する方法がわからないという奇妙なエラーが発生しているようですcURL のファイルハンドルオプション。

これは、ファイルを取得するために現在使用しているものです。

    $ch = curl_init('*FILE_TO_GET*');
    $fp = fopen('*WHERE_TO_FILE*', 'wb');
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);

ファイルは現時点で約 3.8 MB ですが、さらに大きくなる可能性があります。

4

1 に答える 1

1

ダウンロードするファイルのサイズを知らなければ、完全にダウンロードされたかどうかを判断することはできません。

そのため、ファイルのヘッダー情報を取得する必要があります。通常、ファイル ヘッダーは非常に小さく、大きなファイルをダウンロードする場合は、努力する価値があります。ヘッダーには、ファイル サイズとその他の情報が含まれます。

以前にヘッダーを取得しようとしたことがないので、 fileをダウンロードせずに Php Remote File Sizeでファイル サイズを決定する、このきちんとした小さな関数を試してください。

そこの例では、ヘッダーをダウンロードしてサイズ情報を抽出する方法を詳しく説明しています。次に、この値をダウンロードしたファイル サイズとビオラと単純に比較できます。

于 2013-02-28T12:11:01.597 に答える