0

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

<?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')");

?>

这个脚本需要大约 15 秒来执行(所以 15 被插入到我的测试表中),在这些秒之后,页面也重定向到指定的域。

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

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

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

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

4

2 回答 2

5

header("Location: ...");只是设置一个标题,仅此而已。这就是为什么您应该始终exitdie()在设置 Location 标头之后,除非您确切地知道不这样做会导致自己陷入什么困境。

至于你想要做什么,这是一个坏主意。故意让请求花费 15 秒只是请求 DOS 攻击。

于 2012-09-10T21:55:12.893 回答
-1

试试这个:

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

调用标头后退出有效。

于 2012-09-10T21:55:09.403 回答