SymLinks与PHP包括(性能)

对于运行Apache的Linux服务器来说,哪两个更容易/更快?

一)指向一个PHP文件的符号链接

file-sym.php ---> file-orig.php

B)包含另一个PHP文件( file-orig.php )的PHP文件( file-orig.php ),如下所示:

file-inc.php的内容

 <?php include('file-orig.php'); ?> 

好奇,如果有人做了任何基准!

我的直觉反应告诉我符号链接会更快,因为在处理链中的第一个链接时,你将不得不读取更less的数据。 我不确定有什么区别,尝试两个看看有什么不同。

一个)

  1. 读取文件(ext2 +符号链接包含在inode中,因此只有一个查找)
  2. 读取其他文件
  3. 执行php

B)

  1. 读取文件
  2. 执行php
  3. 读取其他文件
  4. 执行php

include()变体对于Windows用户来说是好的,因为他们的系统上不能有符号链接。

出于安全性和性能的原因,许多pipe理员禁用apache符号链接。

为了达到性能目的,请在apache优化中查看此页面: http : //httpd.apache.org/docs/2.2/misc/perf-tuning.html

无论您的URL空间中哪里没有选项FollowSymLinks,或者您有一个选项SymLinksIfOwnerMatch Apache将不得不发出额外的系统调用来检查符号链接。 每个文件名组件一个额外的调用 例如,如果你有:

  <Directory /> DocumentRoot /www/htdocs Options SymLinksIfOwnerMatch </Directory> 

并请求URI /index.html。 然后Apache将在/ www,/ www / htdocs和/www/htdocs/index.html上执行lstat(2)。 这些lstats的结果永远不会被caching,所以它们会在每个请求中发生。

根据您的环境和代码,您可以看到符号链接如何成为指数性能问题。