CURL がリモートの画像をローカルに収集するときに、画像が見つからない場合はどうすればよいですか?

WBOY
リリース: 2016-06-23 13:33:17
オリジナル
882 人が閲覧しました

リモートの写真をローカルエリアに保存するにはある程度の時間がかかり、一度に数百の記事が収集されるため、次の写真が収集されるまでに多くの写真がローカルに保存されません。

収集間隔を設定せずに、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) 間隔が設定されていない場合は、すべての画像がローカル コンピュータに正しく保存されます。この問題を解決する方法はありますか

curl_multi を使用していませんか?単一のカールではリソースを最大限に活用できません

CURLOPT_FILE パラメータは手動介入なしでファイルに直接書き込むことができます

複数の画像を一度に収集して記事に公開することはありません。代わりに、各記事のリモート画像はローカルに保存されるため、シングルスレッドのカールが使用されます


画像を含む 100 個の記事を独自のプログラムに収集します。画像をローカライズする過程で、いくつかの画像が失われます。 curl_multiって使ってないんですか?単一のカールではリソースを最大限に活用することはできません
CURLOPT_FILE パラメータは手動介入なしでファイルに直接書き込むことができます

CURLOPT_FILE は確かにはるかに高速ですが、欠落するファイルが少なくなるだけであり、依然として欠落は避けられません

1 つの記事のみ写真は1枚ありますか?
欠けている写真は分析されない可能性があります

記事に写真は 1 枚だけですか?
欠けている画像は解析されない可能性があります

各サイクルの間に 2 秒の間隔がある限り、完全にローカルに保存されます。次のサイクルを実行する前に、完全に実行されるのを待つ方法はありませんか?


記事は1つだけです 写真は?

欠けている画像は解析できない可能性があります 画像として保存した後、file_put_contents を実行して画像アドレスをテキスト ファイルに書き込みました。画像アドレスの数は少なくないため、画像解析は問題ありません。問題 書き込みにある程度の時間がかかる可能性がありますが、ループは書き込みの完了を待ちません

この問題を解決するために fwrite($fp, file_get_contents($url)); を使用しました。しかし、なぜカールがうまくいかないのでしょうか?データが返されるのを待たずに続行しましたか? すべてを正しく取得するためのcurlの設定方法

curl_getを再入力することはできません 前の実行が完了した後にのみ、次の実行を実行できます

一時停止する必要がありますか?ループ内では問題ありません

それでは、curl を使用するとファイルが失われるのはなぜですか? 設定方法

CURLOPT_TIMEOUT cURL が実行できる最大秒数を設定します

CURLOPT_CONNECTTIMEOUT接続を開始する前に待機します。0 に設定すると、無期限に待機します。

これら 2 つを試してください。問題は解決するはずです。そうでない場合は、コードの他の部分を確認してください。curl に問題がない可能性があります

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!