检查远程文件存在的最快方法

时间:2011-11-15 15:44:19

标签: php

我需要检查css文件是否可用,或者 - 如果没有 - 加载本地回退文件。什么是PHP中最快的方式?

5 个答案:

答案 0 :(得分:7)

没有最快的方法。如果您需要并且想要探测远程文件,则需要HTTP请求。有多种选择,但只有轻微的性能差异。实际延迟来自发出HTTP传输。

get_headers()是最简单的选择:

 $exists = strstr(current(get_headers($url)), "200");

答案 1 :(得分:3)

我建议您先在HTML中加载CSS后备文件,然后再加载其他CSS文件。如果第二个不可用,第一个将提供您的格式。否则它将被第二个文件覆盖。

示例:

<link rel="stylesheet" type="text/css" href="fallback.css" />
<link rel="stylesheet" type="text/css" href="yourstyle.css" />

如果您真的不想这样做,也可以在服务器端使用PHP执行此操作。

示例:

<?php
if (file_exists('filepath.css'))
    echo '<link rel="stylesheet" type="text/css" href="yourstyle.css" />';
else
    echo '<link rel="stylesheet" type="text/css" href="fallback.css" />';
?>

如果你真的不喜欢这样的话,这就是服务器端。

答案 2 :(得分:1)

我会选择leo的答案,但如果你真的想按照自己的方式去做,请使用file_get_contents()

  

该函数返回读取数据或失败时返回FALSE。

答案 3 :(得分:1)

我猜这个文件是远程的,如果没有那么回到本地?否则,因为第一个答案表明只是加载并适当地退回,在大多数情况下,这是一个微不足道的开销。但是当你提到回到本地时,假设你正在尝试加载一个远程文件,在这种情况下,在只读模式下使用fopen,然后使用适当的文件路径回显或返回一个变量,例如......



    $filename = 'http://uk.php.net/css/style.css';

    // Check to see if the file exists by trying to open it for read only
    if (fopen($filename, 'r')) {
        $css = 'href="http://uk.php.net/css/style.css"';
    } else {
        $css = 'href="style.css"';
    }


但说实话,除非您的网站拥有大量流量,否则它有点过分,即便如此,我也不确定哪个会有更大的开销。

答案 4 :(得分:0)

您可以在php中使用is_file()函数来检查该文件是否可用。 http://php.net/is_file