【问题标题】:Provide multiple mirrors if a file doesn't exist如果文件不存在,则提供多个镜像
【发布时间】:2013-06-08 23:10:22
【问题描述】:

我想要一个 Mirror 脚本来确定某个文件是否可以访问。如果镜像 1 可访问,则显示镜像 1 的链接。如果镜像 1 不可访问,则显示镜像 2 的链接。

到目前为止这是完美的,但是我想要更多的镜子。例如,如果镜像 2 不可用,则会显示镜像 3。如果镜像 3 不可用,镜像 4 将 被呈现等等。我只是不太确定我该如何完成这项工作。有没有人有任何建议?他们将不胜感激。我已经尝试了很多东西!

$mirror1 = "download1.exe";
$mirror2 = "download2.exe";
$header_response = get_headers($mirror1, 1);
if ( strpos( $header_response[0], "404" ) !== false )
{
    echo '
<a href="', $mirror1, '">Download Mirror 1</a>
';
} 
else 
{
    echo '
<a href="', $mirror2, '">Download Mirror 2</a>
';
}

【问题讨论】:

    标签: php if-statement download mirror


    【解决方案1】:

    这是一种方法:

    $mirrors = array("download1.exe","download2.exe","download3.exe");
    
    foreach($mirrors as $mirror) {
        $header_response = get_headers($mirror, 1);
        if (strpos( $header_response[0], "404" ) === false) {
            echo '<a href="', $mirror, '">Download from '.$mirror.'</a>';
            break; //removing break will show all available mirrors
        }
    }
    

    【讨论】:

    • 我喜欢这个想法,它运作良好。但不幸的是,当链接无效时,它只会提供无效链接而不是替代链接。
    • 谢谢你们,非常感谢。
    • @Jessica 感谢您指出这一点,这是一个不幸的复制/粘贴错误 :)
    【解决方案2】:

    您可以将它们全部放入一个数组中。然后 while() 响应为 === false,array_shift 将下一个移出数组并使用它。一旦它不是假的,你就会回显最后一个使用的。

    【讨论】:

    • 这怎么能准确地工作,我喜欢使用数组的想法,但它是如何工作的呢?这真的很有帮助,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2019-05-01
    • 2016-06-18
    相关资源
    最近更新 更多