为什么Location标头不会立即重定向页面? 它总是在重定向之前执行整个过程?
我将举一些例子:
header('Location:http://www.php.net');
$f = fopen('demo.txt','w+');
fwrite($f,'Test');
fclose($f);
它始终在重定向到http://www.php.net
之前生成TXT文件。
答案 0 :(得分:10)
好吧,header()
只是向浏览器发送某些标头。之后PHP仍然继续运行脚本。如果您不想停止运行脚本,只需使用die;
或exit;
- 它将停止进一步处理脚本。
答案 1 :(得分:2)
这是因为header()
函数没有重定向,它会发送一个标题。浏览器可以(理论上)完全忽略它并选择继续解析页面。如果您希望脚本在发送标题后不进行处理,请立即触发die()
或exit()
。
答案 2 :(得分:1)
为什么Location标头不会立即重定向页面?
仅仅因为它根本没有重定向任何东西。它的浏览器将制动当前连接(导致脚本停止)以请求另一个页面。并且存在网络延迟。
它总是在重定向之前执行整个过程吗?
并非总是如此。它只是不保证。
我真的需要这个过程继续粘贴标题位置,以便最终确定系统并生成日志
使用mod_php,您将需要ignore_user_abort()
,并使用php-fpm fastcgi_finish_request()
来保证整个脚本的执行。