【问题标题】:PHP: will there be any possible harm if I put exit; at the end of the script?PHP:如果我退出,会有任何可能的伤害吗?在脚本的末尾?
【发布时间】:2016-12-12 03:32:54
【问题描述】:

显然,如果我将exit; 放在index.php 的末尾,对我的 CodeIgniter 应用程序的请求最多可以节省 300ms

/*
 * --------------------------------------------------------------------
 * LOAD THE BOOTSTRAP FILE
 * --------------------------------------------------------------------
 *
 * And away we go...
 */
require_once BASEPATH.'core/CodeIgniter.php';

/* End of file index.php */
/* Location: ./index.php */

exit; // <~~ save me ~300ms request time, from ~900ms to ~600ms

我知道,这很奇怪,我想不出任何合理的解释。我正在寻找答案并尝试在孤立的环境中重现该行为。但同时,如果有任何我不知道的明显原因,我想问一下......

如果我把exit退出会有什么危害吗?在 CodeIgniter 3.0 中 index.php 的末尾?

【问题讨论】:

  • 如果它节省时间,这可能意味着代码在您的主文件完成后执行。这取决于额外代码的作用。
  • 您对我如何找到“额外代码”有什么建议吗?
  • AFAIK,php代码是同步的,这个index.php是每个请求去的第一个脚本,所以“额外代码”必须是多线程或主进程创建的子进程脚本?是对的吗?我不记得在我的脚本中使用过任何这些。是否有任何常见的 php 内置方法导致此问题?我可以使用 XDebug 来查看“额外代码”吗?
  • 您是否考虑过关闭 xdebug 扩展并再次测试它?如果我在 Windows 机器上执行此操作 - 所有 php 脚本都运行得更流畅、更快 - 我问这个是因为你的退出是文件的结尾。在你的一个视图中写下'

    Rendertime:benchmark->elapsed_time();?>

    ' 并查看@the execution time with and without your exit 并在此处发布你的结果
  • @sintakonte 你是对的,它是 Xdebug。所以这就是为什么我无法看到使用 Xdebug 的原因,哈哈。

标签: php multithreading codeigniter exit


【解决方案1】:

您是否考虑过关闭 xdebug 扩展并再次对其进行测试? 如果我在 Windows 机器上这样做 - 所有 php 脚本都运行得更流畅、更快 -

我问这个是因为你的退出是文件的结尾。 在你的观点中写下类似

&lt;h3&gt;Rendertime:&lt;?php echo $this-&gt;benchmark-&gt;elapsed_time();?&gt;&lt;/h3&gt;

看看有没有退出的@执行时间。 大多数时候它们是一样的。

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2011-02-23
    相关资源
    最近更新 更多