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