【发布时间】:2013-01-28 14:42:39
【问题描述】:
是的,以前有人问过这个问题,但是答案不一致。以Why I have to call 'exit' after redirection through header('Location..') in PHP? 为例。每个答案(包括接受的答案)都表明是,除了最后一个答案是零票,上面写着“也许”。我开始认为正确的答案是“也许”。为了使它成为一个简单的“是”或“否”问题,doThis() 会在给定以下脚本的情况下执行吗?谢谢
header('Location: http://somewhereElse.com');
//die();
sleep(1000);
doThis();
编辑 谢谢大家。使用我的 PHP/Linux/Apache 配置,第二个 syslog() 执行,所以答案是“是的,将执行标头下游的所有脚本”。我会假设(并希望我是正确的)所有 PHP/Linux/Apache 配置都是一样的!
<?php
header('Location: http://google.com');
syslog(LOG_INFO,'first');
sleep(5);
syslog(LOG_INFO,'Second');
?>
【问题讨论】:
-
你试过了吗?您示例中的睡眠时间将超过
max_execution_time。否则,是的。 -
是的,尽管您不需要
sleep()电话。header()不会停止执行,只会设置响应头 -
没有,没试过。真丢人!阅读我最初引用的 SO 线程上的最后一篇文章以及对stackoverflow.com/questions/7246649/… 的回复,Apache 似乎将关闭连接,并且 PHP 脚本将停止执行。
-
yes yes yes, header 就像 php 脚本的任何其他部分一样,它将在脚本执行完成后发送,但是,诀窍是:如果我们要重定向到新 URL:那么为什么在 header("location: url"); 之后继续执行脚本?>
-
我的测试结果已添加到我的原始帖子中的 EDIT 部分。
标签: php