【问题标题】:PHP: kill script or premature return?PHP:杀死脚本还是过早返回?
【发布时间】:2011-11-14 07:11:32
【问题描述】:

在 PHP 中,我可以使用 die() 来杀死整个脚本。但是,我希望脚本执行到某个点并退出,而整个脚本不会死。

类似这样的:

echo "Hello, what is your name?";
if($name == $blacklist)
{
   echo "I don't talk to strangers";
   die(); // This will break all the echos
}
else
  // Stuff

我只是希望脚本终止(并打印回声直到终止点),并且使用 die() 实际上会使脚本不打印任何内容。

有什么想法吗?也许像 C 中的“返回 0”?

【问题讨论】:

  • 该示例对我来说效果很好。它会回显所有内容,直到调用 die()。你用的是什么版本的PHP?
  • @Tarek 哇,我到底是怎么犯这个错误的……出于某种原因,我认为调用 die 时整个脚本没有执行。
  • 对不起大家,抱歉浪费了大家的时间

标签: php return kill die


【解决方案1】:

你可以这样做:

die("I don't talk to strangers");

或者:

echo "I don't talk to strangers";exit;

或者干脆“返回”return;

或throw new Exception("I don't talk to strangers");

【讨论】:

  • 但这不会打印"Hello, what is your name?"
  • @dulkevin 打印您需要检查是否在 GET/POST 请求中设置了参数。如果不是,则简单地回显“Hellow,你叫什么名字”,否则进行黑名单检查。
【解决方案2】:

没有你想象的“脚本执行”。

实际上有两个实例在运行同一个脚本,而不是一个。第一个问问题,第二个检查答案。

PHP 脚本的执行是原子的。它不像一个在你的浏览器中不断运行的桌面应用程序,甚至不是一个与你的桌面应用程序持久连接的恶魔。它更像是一个命令行实用程序——完成它的工作并退出。它运行离散。

因此,您必须选择要终止的正确代码分支,而不是整个脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2016-01-24
    • 2021-05-02
    相关资源
    最近更新 更多