PHP 从多个源加载第一个图像

问题描述 投票:0回答:2

假设存在一个简单的网站,将用户图像托管在多个图像共享网站上,以确保一台服务器宕机不会损害用户页面的完整性。

是否可以使用 PHP(也许使用

Thread
curl
proc_open
?)来确定哪些图像托管站点已启动,并使用产生最快图像传输的主机来显示图像?

php web-services curl
2个回答
0
投票

我使用 php 的 fsockopen() 函数读取第一行(标题)并检查 404 或 302 等错误状态以确定文件是否存在。确实又快又高效。 php.net 上有关于如何使用 fsockopen 的很棒的文档。 $path contains 包含图像的文件名。

$fp = @fsockopen($domain, 80, $errno, $errstr, 1);
if ($fp) {
    $out = "GET $path HTTP/1.1\r\n";
    $out .= "Host: $domain\r\n";
    $out .= "Connection: Close\r\n\r\n";
    ...
}

0
投票

如果您希望客户端直接从托管服务商请求图像,那么了解您的服务器可以访问哪个图像托管服务商的作用有限。

这意味着您有两个可靠的选择:

  • 将图像加载到您的服务器(通过 cURL 或 http 协议包装器),然后将其从那里传送到客户端
  • 使用客户端脚本将图像加载到客户端。

我建议您研究第二个选项,通过 PHP 提供可能的图像 URL 列表,然后在客户端上使用 JS 尝试加载,直到成功(或列表耗尽)。随机值和概率阈值的组合还可以使您的客户端脚本在加载失败时“打电话回家”,这样您就可以在服务器端重新排序您的 URL 列表。

© www.soinside.com 2019 - 2024. All rights reserved.