Это меня очень смущает, и я нигде не могу найти никакой информации, которая могла бы объяснить это.
У меня есть база данных, содержащая около 1000 URL-адресов изображений, и я выполняю обратный вызов заголовка cURL
curl_setopt($this->curl, CURLOPT_HEADERFUNCTION, array($this, 'headerCallback'));
Который в нем ищет длину содержимого URL изображения ...
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
)
Теперь это только на одном сервере / хосте, с которым я сталкивался с этим.
Кто-нибудь когда-либо сталкивался с точно таким же URL-адресом изображения, возвращая либо 24-битное значение (например, content-length
значение: 397570
одного изображения), либо 32-битное изображение (content-length
значение: 501502
) того же изображения, почему это и есть ли что-то, что я могу сделать, чтобы решить эту странную проблему?
Конечно, это отбрасывает всю систему проверка заголовка и загрузка изображения, если оно «изменилось» - иногда оно хочет загрузить 24-битное изображение, иногда оно хочет загрузить 32-битное изображение - кажется совершенно случайным, когда оно возвращает 24-битное или 32-битное изображение.
Визуально - в изображении нет различий.
Должен ли я как-то получить значения как для 24-битного, так и для 32-битного изображения, чтобы это работало? Кто-нибудь знает, почему статический URL-адрес изображения c будет возвращать (на первый взгляд случайно) либо 24-битное, либо 32-битное изображение того же изображения?
Каким будет предлагаемый путь вперед? Любые советы или информация будет принята с благодарностью!