php从多个来源加载第一张图片

时间:2013-07-24 15:56:57

标签: php web-services api curl web

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

是否可以使用php(可能使用Threadcurlproc_open?)来确定哪些图像托管网站已启动并使用生成该图像的主机显示图像最快的图像传送?

2 个答案:

答案 0 :(得分:0)

如果您希望客户端直接从托管服务商请求图片,则知道可以从服务器访问哪个图片托管服务商的用途有限。< / p>

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

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

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

答案 1 :(得分: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";
    ...
}
相关问题