リモートの写真をローカルエリアに保存するにはある程度の時間がかかり、一度に数百の記事が収集されるため、次の写真が収集されるまでに多くの写真がローカルに保存されません。
収集間隔を設定せずに、PHP を使用してこの問題を解決できますか? 画像をローカル実行に保存した後でのみ、次の画像を実行し続けます
マルチスレッドコレクション?
該当するコードを投稿するのが一番です
function curl_get($url) { $filename = time (); $curl = curl_init (); curl_setopt ( $curl, CURLOPT_URL, $url ); curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, true ); $data = curl_exec ( $curl ); curl_close ( $curl ); $file_extension = image_type ( $url ); $filename .= '.' . $file_extension; $fp = fopen ( './zzz/' . $filename, "w" ); fwrite ( $fp, $data ); fclose ( $fp );}$content = file_get_contents ( 'img.txt' );$arr = explode ( "\r\n", $content );foreach ( $arr as $v ) { curl_get ( $v );}
img.txtはリモート画像アドレスを保存します。ループ中にスリープします (2) 間隔が設定されていない場合は、すべての画像がローカル コンピュータに正しく保存されます。この問題を解決する方法はありますか
CURLOPT_FILE パラメータは手動介入なしでファイルに直接書き込むことができます
画像を含む 100 個の記事を独自のプログラムに収集します。画像をローカライズする過程で、いくつかの画像が失われます。 curl_multiって使ってないんですか?単一のカールではリソースを最大限に活用することはできません
CURLOPT_FILE パラメータは手動介入なしでファイルに直接書き込むことができます
CURLOPT_FILE は確かにはるかに高速ですが、欠落するファイルが少なくなるだけであり、依然として欠落は避けられません
記事に写真は 1 枚だけですか?
欠けている画像は解析されない可能性があります
記事は1つだけです 写真は?
この問題を解決するために fwrite($fp, file_get_contents($url)); を使用しました。しかし、なぜカールがうまくいかないのでしょうか?データが返されるのを待たずに続行しましたか? すべてを正しく取得するためのcurlの設定方法
一時停止する必要がありますか?ループ内では問題ありません
それでは、curl を使用するとファイルが失われるのはなぜですか? 設定方法
CURLOPT_TIMEOUT cURL が実行できる最大秒数を設定します
CURLOPT_CONNECTTIMEOUT接続を開始する前に待機します。0 に設定すると、無期限に待機します。
これら 2 つを試してください。問題は解決するはずです。そうでない場合は、コードの他の部分を確認してください。curl に問題がない可能性があります