我相信所有这些(甚至die()或die(0))都是相同的。如果它们不相同,那么成功退出脚本的首选方法是什么?如果它们相同,是否有任何首选标准来指示脚本成功完成?我倾向于使用exit;。
编辑:所有的答案都有“die()并且exit()是相同的”,即使我在我的问题中这么说。我更新了标题,希望更清楚地说明这不是我的问题。我想从命令行脚本中清楚地表明成功。
我相信所有这些(甚至die()或die(0))都是相同的。如果它们不相同,那么成功退出脚本的首选方法是什么?如果它们相同,是否有任何首选标准来指示脚本成功完成?我倾向于使用exit;。
编辑:所有的答案都有“die()并且exit()是相同的”,即使我在我的问题中这么说。我更新了标题,希望更清楚地说明这不是我的问题。我想从命令行脚本中清楚地表明成功。
return有不同的含义
Answers:
这些都是相同的。我敢肯定,die()这只是的简单别名exit(),但是即使不是,它的行为也一样。
当为这些函数之一提供字符串参数时,它将在终止进程之前打印出字符串。当它遇到小于255的整数时,该整数将被视为该进程的返回码,该返回码将传递回调用PHP脚本的进程。这在编写命令行应用程序时特别有用(PHP不仅限于Web!)。
至于之间的差异exit,exit()和exit(0),真的是没有的。前两者之间绝对没有区别,因为exit从技术上讲它是一种语言构造,而不是一个函数,因此可以像使用一样在带或不带括号的情况下调用它echo。返回代码0意味着“该程序运行成功/没有错误”,尽管我不知道当您不传递参数时会发生什么,PHP.net却说少参数exit表示成功,所以我敢打赌它返回0,尽管再次PHP.net不显示该参数的默认值。
exit(0)表示成功退出,exit(1)表示失败退出。
exit(或die)时实际的退出代码是什么。看过例如常见的die(-1)成语,并且也die("Poo!...")经常听到很多,一个人可能还是不太确定,反正:猜测应该属于其他职业...所以,FTR:它是0。这也意味着后者die("error!")将最实际上可能是CLI脚本中的错误!:-o
我会下地狱,但在某些情况下,如果在CLI中黑客入侵,我们不希望该程序被杀死,而又不想继续执行全部代码。
此处的目标是避免对单独的指针文件进行api调用。假设我的界面上有一个不错的播放按钮,可以执行系统调用。
示例1:作业结束后程序被杀死,没有数据返回。这是不想要的。
if ($_GET["play"] != ""){
// Some job
exit;
}
/* Huge amount of data*/
示例2:程序仍在运行,将整个数据提供给GET请求。在这种情况下,这是不必要的。这使浏览器的所有数据都变慢了,他已经有了。
if ($_GET["play"] != ""){
// Some job
}
/* Huge amount of data*/
示例3:程序仍在运行,没有按预期返回任何数据,已经执行了play命令,但是对整个数据集进行了解析,这是不必要的工作,会降低php /机器的速度。
/* Huge amount of data*/
if ($_GET["play"] != ""){
// Some job
}
示例4:程序仍在运行,没有按预期返回任何数据,已经执行了play命令,还没有解析整个数据,php迅速返回了200OK,响应为空,非常快。大家开心!
if ($_GET["play"] != ""){
// Some job
goto END;
}
/* Huge amount of data*/
END;
是! 有时最好考虑使用GOTO-🔨-!