PHP中的die()函数和exit()函数有什么区别?
我认为两者具有相同的功能,但我怀疑两者之间有什么不同……是什么?
PHP中的die()函数和exit()函数有什么区别?
我认为两者具有相同的功能,但我怀疑两者之间有什么不同……是什么?
当前回答
这里有一些非常有趣的东西。虽然exit()和die()是等价的,但die()关闭了连接。Exit()不会关闭连接。
die ():
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
退出():
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
结果:
die ():
HTTP/1.1 304 Not Modified
Connection: close
退出():
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
只是以防万一,需要把这考虑到你的项目。
学分:https://stackoverflow.com/a/20932511/4357238
其他回答
如前所述,这两个命令产生相同的解析器令牌。
BUT
有一个很小的区别,那就是解析器返回令牌所需的时间。
我还没有研究过PHP解析器,但是如果它是一个以“d”开头的长列表,以及一个以“e”开头的短列表,那么查找以“e”开头的函数名必须花费一定的时间。由于整个函数名的检查方式不同,可能会有其他差异。
除非您有一个专门用于解析PHP的“完美”环境,以及大量具有不同参数的请求,否则我怀疑它是无法测量的。 但肯定有区别,毕竟PHP是一种解释性语言。
正如所有其他正确答案所说,die和exit是相同的/别名。
尽管我有一个个人约定,当我想在预期和期望的时候结束脚本的执行时,我使用exit;。当我需要结束执行由于一些问题(无法连接到db,不能写入文件等),我使用die(“Something went wrong.”);“杀死”剧本。
当我使用exit时:
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
当我使用die时:
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
这样,当我在代码中的某个点看到exit时,我知道在这一点上我想退出,因为逻辑在这里结束。 当我看到die时,我知道我想继续执行,但我不能或不应该由于之前执行的错误。
当然,这只适用于独自从事一个项目。当有更多的人,没有人会阻止他们使用die或exit,这不符合我的惯例…
在功能方面,它们是相同的,但我在以下场景中使用它们以使代码可读:
当出现错误并必须停止执行时使用die()。
如。 死亡(“哦!出问题了’);
当没有错误并且必须停止执行时,使用exit()。
如。 exit('请求已成功处理!”);
exit()函数和die()函数的结果总是相同的。但正如别名手册页(http://php.net/manual/en/aliases.php)所解释的那样,它说die()函数调用exit函数。我认为它是硬编码如下:
function die($msg){
exit($msg);
}
这不是小型、中型和大型项目的性能问题,但如果项目有几十亿几十亿的过程,这是非常重要的性能优化状态。
但大多数人不认为这是一个问题,因为如果你有那么多进程,你肯定比一个函数是master或alias考虑更多的问题。
确切的答案是;总是主函数比别名更快。
最后;别名手册页上说,你可能不再使用死亡。它只是一个别名,不推荐使用。
使用这类别名通常是一个坏主意,因为它们可能是 注定要过时或重命名,这将导致不可移植 脚本。此列表是为了帮助那些想要升级他们的 旧脚本到新语法。
https://3v4l.org的输出说明die和exit在功能上是相同的。