这让我很困惑,我似乎无法在任何地方找到任何可以解释这一点的信息。
我有一个包含大约 1,000 个图像 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 会返回(看似随机)同一图像的 24 位或 32 位?
建议的前进方向是什么?任何提示或信息将不胜感激!