为什么php header("location ...")在脚本结束时执行?

Ali*_*web 0 php redirect header

这是一个我测试过的简单脚本:

<?php

require 'dbcon.php';

header("location:http://google.com");

$time1 = time();

for($i=0;$i<=9999999;$i++){
    $j += $i * $i * $i * $i;
}

$time2 = time();

$total = $time2-$time1;

mysql_query("insert into test values('$total')");

?>
Run Code Online (Sandbox Code Playgroud)

这个脚本大约需要15秒才能执行(因此在我的测试表中插入了15个脚本),在这些秒之后,页面也会重定向指定的域.

我的问题是为什么会这样?

在我的实际代码中,我想将用户重定向到一个网页然后执行剩余的代码并存储在数据库中,因此用户不必等待很多.怎么做?

UPDATE1: 请回答这个问题:
我想首先重定向用户,然后将数据插入mysql.例如,我首先得到用户的IP.然后我想重定向他,然后从他的IP等检测用户国家,然后将信息插入mysql.有可能吗?

UPDATE2:
我希望从另一个具有curl扩展名的站点获取用户的国家和地区,然后存储在数据库中.所以需要几秒钟......

Nie*_*sol 5

header("Location: ...");只是设置标题,仅此而已.这就是为什么你应该总是exit或者die()在设置一个Location标题之后,除非你不知道自己正在做什么.

至于你想要做什么,这是一个坏主意.故意提出15秒的请求只是要求DOS攻击.