php header立即位置?

时间:2011-08-27 09:25:16

标签: php redirect header

为什么Location标头不会立即重定向页面? 它总是在重定向之前执行整个过程?

我将举一些例子:

header('Location:http://www.php.net');
$f = fopen('demo.txt','w+');
fwrite($f,'Test');
fclose($f);

它始终在重定向到http://www.php.net之前生成TXT文件。

3 个答案:

答案 0 :(得分:10)

好吧,header()只是向浏览器发送某些标头。之后PHP仍然继续运行脚本。如果您不想停止运行脚本,只需使用die;exit; - 它将停止进一步处理脚本。

答案 1 :(得分:2)

这是因为header()函数没有重定向,它会发送一个标题。浏览器可以(理论上)完全忽略它并选择继续解析页面。如果您希望脚本在发送标题后不进行处理,请立即触发die()exit()

答案 2 :(得分:1)

  

为什么Location标头不会立即重定向页面?

仅仅因为它根本没有重定向任何东西。它的浏览器将制动当前连接(导致脚本停止)以请求另一个页面。并且存在网络延迟。

  

它总是在重定向之前执行整个过程吗?

并非总是如此。它只是不保证。

  

我真的需要这个过程继续粘贴标题位置,以便最终确定系统并生成日志

使用mod_php,您将需要ignore_user_abort(),并使用php-fpm fastcgi_finish_request‎()来保证整个脚本的执行。

相关问题