これは私にとって非常に紛らわしく、これを説明する情報がどこにも見つからないようです。
約 1,000 の画像 URL のデータベースがあり、cURL ヘッダー コールバックを実行しています。
curl_setopt($this->curl, CURLOPT_HEADERFUNCTION, array($this, 'headerCallback'));
画像 URL の content-length を検索するのはどれですか...
if ($name === 'content-length' && (int) $value === $this->filesizecheck) {
curl_setopt($this->curl, CURLOPT_NOBODY, true);
}
filesizecheck
サーバーに既にダウンロードされているイメージのファイルサイズをチェックするだけです。
CURLOPT_NOBODY
設定は、サーバー上のファイルサイズがヘッダーからのコンテンツの長さと一致する場合、システムに画像本体をダウンロードしないように指示し、ヘッダーで停止することを意味します。
これを実装する最初のアイデアは、画像 URL 内の画像が変更されているかどうかを確認することでした。変更されている場合は、画像をダウンロードして置き換えます。そうでない場合 -- ヘッダー チェックを行い、それをスキップします。
私を悩ませているのは、まったく同じ画像の URL が、まったく同じ画像の 24 ビットまたは 32 ビットを返す場合があることです。これは私が予期していなかったことであり、明らかに私を捨てていfilesizecheck
ます!
何かを示唆している場合の画像の URL のヘッダーは次のとおりです。
Array
(
[0] => Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
[1] => Accept-Encoding: gzip, deflate
[2] => Accept-Language: en-US,en;q=0.9
[3] => Connection: keep-alive
[4] => Host: /////
[5] => Upgrade-Insecure-Requests: 1
)
現在、これは私がこれを経験した1つのサーバー/ホストのみです。
content-length
同じ画像の 24 ビット (値の例: 397570
1 つの画像) または 32 ビットの画像 (content-length
値: ) を返すまったく同じ画像の URL に遭遇したことがある人はいます501502
か? これはなぜであり、この奇妙な問題を解決するために私にできることはありますか?問題?
もちろん、これはヘッダーチェックを実行し、「変更」された場合にイメージをダウンロードするシステム全体を無効にします-24ビットイメージをダウンロードしたい場合もあれば、32ビットイメージをダウンロードしたい場合もあります-完全にランダムに見えますいつ24ビットまたは32ビットのイメージを返すかについて。
視覚的に・・・イメージに違いはありません。
これを機能させるには、24 ビット イメージと 32 ビット イメージの両方から何らかの方法で値を取得する必要がありますか? 静的な画像の URL が (一見ランダムに) 同じ画像の 24 ビットまたは 32 ビットを返す理由を知っている人はいますか?
今後の推奨される方法は何ですか?ヒントや情報をいただければ幸いです。