php - 如何使用 PHP 检查远程文件是否存在?

我能找到的最好的,一个 if fclose fopen 类型的东西,使页面加载非常缓慢。

基本上我要做的是:我有一个网站列表,我想在它们旁边显示他们的网站图标。但是,如果网站没有,我想用另一张图片替换它,而不是显示损坏的图片。

最佳答案

您可以通过 CURLOPT_NOBODY 指示 curl 使用 HTTP HEAD 方法。

或多或少

$ch = curl_init("http://www.example.com/favicon.ico");

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// $retcode >= 400 -> not found, $retcode = 200, found.
curl_close($ch);

无论如何,您只节省了 HTTP 传输的成本,而不是 TCP 连接的建立和关闭。由于网站图标很小,您可能看不到多少改进。

如果结果太慢,在本地缓存结果似乎是个好主意。 HEAD 检查文件的时间,并在标题中返回它。您可以像浏览器一样获取图标的 CURLINFO_FILETIME。 在您的缓存中,您可以存储 URL => [ favicon, timestamp ]。然后,您可以比较时间戳并重新加载网站图标。

https://stackoverflow.com/questions/981954/

相关文章:

php - PHP中的静态类初始化器

php - 在 Symfony2 中访问与 Bundle 相关的文件

php - 日期减去 1 年?

php - 一起注释掉 HTML 和 PHP

php - 将秒转换为天、小时、分钟和秒

php - 如何从访客那里获得真实 IP?

php - 生成随机 5 个字符的字符串

php - 如何使用 PHP 从字符串中删除最后一个逗号?

php - 在 PHP 中如何清除 WSDL 缓存?

php - 防止 Laravel 向数据透视表添加多条记录