调用“exit”的php脚本的性能影响是什么?

调用“exit”的php脚本的性能影响是什么?,php,performance,Php,Performance,我已经注意到很多次一些php脚本退出的地方。在我看来,这将强制退出httpd/apache子级。当然,如果下一个请求需要,将启动另一个 但是在CMS中,下一个请求将需要整个init.php初始化,当然首先需要清理和启动php 似乎php文件通常以 if ( !defined( 'SMARTY_DIR' ) ) { include_once( 'init.php' ); } 这表明有人想象一个php进程可以服务多个请求。但是,如果每个脚本都退出,那么每个php/apache进程将只提供一个请求

我已经注意到很多次一些php脚本退出的地方。在我看来,这将强制退出httpd/apache子级。当然,如果下一个请求需要,将启动另一个

但是在CMS中,下一个请求将需要整个init.php初始化,当然首先需要清理和启动php

似乎php文件通常以

if ( !defined( 'SMARTY_DIR' ) ) {
include_once( 'init.php' );
}
这表明有人想象一个php进程可以服务多个请求。但是,如果每个脚本都退出,那么每个php/apache进程将只提供一个请求

对于删除许多退出调用(尤其是从index.php等最常调用的脚本中删除)以允许一个进程处理多个请求的性能和安全影响,您有什么想法

谢谢你,彼得

-附录-

谢谢你的回答。php永远不会提供多个请求,这是我最初的想法,直到上周,当我调试一个配置变量时,由于路径的设置方式,该变量只能在一个脚本中设置,但仍然在另一个脚本中设置。这是在一个每秒点击20次的Web服务器上。在这种情况下,我在一个脚本中没有一个php退出调用,它的配置设置略有不同。但是,当我将php exit调用添加到备用目录中的一个脚本时,这解决了我在主目录中的所有主脚本中遇到的错误配置问题,这些错误配置是由于在前一个页面执行中错误地设置了css目录变量造成的。所以现在我又感到困惑了,因为根据目前所有的答案,php不应该提供多个请求。

退出对Apache进程没有任何影响,它肯定不会杀死一个工作进程!。它只是结束PHP脚本的执行并将执行返回给Apache进程,Apache进程将结果发送到浏览器并继续执行下一个请求


您摘录的Smarty代码与服务多个请求的PHP进程没有任何关系。它只是确保Smarty始终处于初始化状态—如果PHP脚本可能包含在另一个脚本中或直接访问,则非常有用。

即使您不调用exit,您的PHP脚本仍将结束执行,此时任何生成的HTML都将返回到web服务器以发送到浏览器

exit关键字允许您向PHP引擎发出信号,表示您的工作已经完成,无需进行进一步的处理


另外请注意,退出通常用于错误处理和流控制-将其从包含中删除可能会中断您的应用程序。

我认为您的困惑来自于包含的用途。PHP基本上是一个无共享系统,其中没有真正的持久服务器对象。include_once并不意味着每个Apache子级一次,而是每个web请求一次

如果您两次包含同一个文件,PHP可能会搞糟一个毛球。例如,具有特定名称的函数只能定义一次。这导致人们为每个包含的文件实现一个旧的C ifndef define include习惯用法的副本。include_曾经是解决这个问题的方法