2

これは私にとって非常に紛らわしく、これを説明する情報がどこにも見つからないようです。

約 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 ビット (値の例: 3975701 つの画像) または 32 ビットの画像 (content-length値: ) を返すまったく同じ画像の URL に遭遇したことがある人はいます501502か? これはなぜであり、この奇妙な問題を解決するために私にできることはありますか?問題?

もちろん、これはヘッダーチェックを実行し、「変更」された場合にイメージをダウンロードするシステム全体を無効にします-24ビットイメージをダウンロードしたい場合もあれば、32ビットイメージをダウンロードしたい場合もあります-完全にランダムに見えますいつ24ビットまたは32ビットのイメージを返すかについて。

視覚的に・・・イメージに違いはありません。

これを機能させるには、24 ビット イメージと 32 ビット イメージの両方から何らかの方法で値を取得する必要がありますか? 静的な画像の URL が (一見ランダムに) 同じ画像の 24 ビットまたは 32 ビットを返す理由を知っている人はいますか?

今後の推奨される方法は何ですか?ヒントや情報をいただければ幸いです。

4

0 に答える 0