0

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

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

4

2 回答 2

0

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

$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";
    ...
}
于 2013-07-24T16:27:15.663 回答
0

如果您希望客户端直接从主机请求图像,那么知道可以从您的服务器访问哪个图像主机将是有限的。

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

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

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

于 2013-07-24T16:04:16.313 回答