php相对和绝对路径

Liz*_*ard 13 php include-path

我已经读过,当包含一个php文件时,使用绝对路径的处理时间比相对路径快.

你建议使用什么?

include("includes/myscript.php");
Run Code Online (Sandbox Code Playgroud)

要么

include("/home/ftpuser/public_html/includes/myscript.php");
Run Code Online (Sandbox Code Playgroud)

甚至

set_include_path("/home/ftpuser/public_html/includes");
include("myscript.php");
Run Code Online (Sandbox Code Playgroud)

还是我真的不应该担心的事情?

Gre*_*reg 16

我通常手动或像这样设置一个常量:

define('ROOT', dirname(__FILE__));
Run Code Online (Sandbox Code Playgroud)

然后做

require ROOT . '/include/file.php';
Run Code Online (Sandbox Code Playgroud)

  • 因为那时你仍在搜索包含路径 - 这种方式不涉及搜索. (6认同)

Mat*_*ley 8

对于99%的案例,这是最好的方法:

include(dirname(__FILE__)."/includes/myscript.php");
Run Code Online (Sandbox Code Playgroud)

这最终成为一条绝对路径,这意味着它将被忽略include_path,这是我体验中大量包含相关错误的已知来源......

虽然表现明智,但我怀疑绝对路径和相对路径之间存在很大差异.这是一种微观优化,从长远来看,这意味着什么.include_path除非您添加更多内容,否则通常只有2-3件事情.两个常见的罪魁祸首是安装./到何处的路径pear.


Ara*_*ram 7

我用了一个简单的速度测试脚本microtime(true).它测试以下五个包括具有一百万次迭代的方法:

// Absolute path.
include('/home/ftpuser/public_html/includes/myscript.php');

// Predefined path.
define('PATH', '/home/ftpuser/public_html/includes/');
include(PATH . 'myscript.php');

// Relative path.
include('myscript.php');

// Using set_include_path().
set_include_path('/home/ftpuser/public_html/includes/');
include('myscript.php');

// Superglobal path.
include(dirname(__FILE__) . '/myscript.php');
Run Code Online (Sandbox Code Playgroud)


其中给出了以下结果(以秒为单位):

    Absolute path:            263.222
    Predefined path:          263.545
    Relative path:            301.214
    Using set_include_path(): 302.396
    Superglobal path:         269.631


我基于这些结果的观点是使用预定义的路径,因为它是绝对路径超过的最快路径.但是,绝对路径的缺点是,当需要进行更改时,必须在每个文件中对其进行更改.

希望这有帮助.:)

PS
define并且set_include_path()在脚本执行期间仅使用一次(它们位于循环外部).