PHP file_exists() 与 htaccess -f 条件的性能

Posted

技术标签:

【中文标题】PHP file_exists() 与 htaccess -f 条件的性能【英文标题】:Performance of PHP file_exists() vs. htaccess -f condition 【发布时间】:2013-02-05 14:54:14 【问题描述】:

如果静态 html 文件存在于子目录中,我想重定向到它们。

我想知道一个小的 php 脚本作为 htaccess RewriteCond 是否会更高效。

有人对此有经验吗?

非常感谢。

【问题讨论】:

【参考方案1】:

通过 mode_rewrite(在 httpd.conf 或 .htaccess 中)执行此操作将比通过 PHP 脚本执行此操作更有效。

想一想,在 PHP 中执行此操作将需要 Apache 加载 mod_php 模块,然后将调用 PHP 解释器并编译并执行您的 PHP 脚本。如果您在 .htaccess 本身中处理它,所有这些都可以跳过。

【讨论】:

@phpalix 请立即查看答案。 你的说法有依据吗?我并不是说这是错误的,但这是毫无根据的,而且很可能是。 .htaccess 文件必须由 apache 加载、解析和执行。正则表达式很慢,PHP 脚本或 mod_rewrite 都需要统计文件。 @TomB: .htaccess 无论如何(通常)都会存在于网站上,或者 OP 可以将此规则放入 httpd.conf 本身并避免完全使用 .htaccess。 但是htaccess 文件在每个请求上都会被读取,并且每个规则都会被解析。这不会影响性能吗?在此link 上解释了此外,当 apache 启动时会加载 mods,mod_php @tom-b: anubhava 是正确的,基准与否。在非 fcgi 站点的情况下,差异可能相当明显 [取决于服务器负载],因为 PHP 不必为每个请求进行完全启动。对于 fcgi 站点,优势仍然归功于 htaccess,但可能只是每月节省几秒钟

以上是关于PHP file_exists() 与 htaccess -f 条件的性能的主要内容,如果未能解决你的问题,请参考以下文章

PHP Phar - file_exists() 问题

PHP 杂谈 坑爹的file_exists

PHP file_exists 返回 false 但文件确实存在

即使我的 linux 上存在文件,php file_exists 也会返回 false

PHP file_exists() 在某些文件上返回 false

PHP - file_exists 需要很长时间