Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
header()重定向可以在PHP脚本的其余部分执行之前执行吗_Php_Mysql_Redirect - Fatal编程技术网

header()重定向可以在PHP脚本的其余部分执行之前执行吗

header()重定向可以在PHP脚本的其余部分执行之前执行吗,php,mysql,redirect,Php,Mysql,Redirect,我正在用PHP编写一个重定向脚本,它将在MySQL数据库中插入有关单击的信息 如果我将header函数放在insert之前,它是否总是插入数据库中的信息?我想这样做,使重定向尽可能快 $location = "Location: http://www.example.com"; header($location); $sql = "INSERT INTO tracking (info) VALUES ('$info')"; $result = @mysql_query($sql, $con)

我正在用PHP编写一个重定向脚本,它将在MySQL数据库中插入有关单击的信息

如果我将header函数放在insert之前,它是否总是插入数据库中的信息?我想这样做,使重定向尽可能快

$location = "Location: http://www.example.com";
header($location);

$sql = "INSERT INTO tracking (info) VALUES ('$info')";
$result = @mysql_query($sql, $con) or die(mysql_error());
我已经测试过了,它确实在数据库中插入了信息。但是,我主要关心的是,如果服务器运行缓慢,并且头函数在插入之前完成,那么脚本是否会结束而不在数据库中插入信息


或者不管怎样脚本都会完成吗?

是。重定向可以走在前面。
不,您不能保证它将始终在数据库中插入信息。你根本不能依赖这一点。

是的。重定向可以走在前面。
不,您不能保证它将始终在数据库中插入信息。您根本无法依赖此功能。

如果您不希望任何东西运行:

header('..');
exit;
如果您希望合理地确保其余的运行:

header('..');
ignore_user_abort(true);
实际上,根据HTTP定义,301和302可以包含一个主体。除非请求方法是HEAD,否则响应的实体应该包含一个简短的超文本注释,并带有指向新URI的超链接。事实上,如果您的浏览器支持它,您可以暂时禁用重定向并观看呈现的实际页面。浏览器是在头之后立即执行重定向,还是等待整个请求完成,取决于用户代理本身。例如,在我的经验cookie头中,它将等待所有头,因此在初始重定向头之前还是之后调用它都没有区别,但请确保在任何内容/正文之前发送它


对于ignore_session_abort、Web服务器本身的通常超时以及由于Web服务器本身的设置而导致的断开连接的使用存在限制。如果您有一个需要花费大量时间的进程,那么当Web服务器进程不进行任何HTTP通信时,您不应该让它保持忙碌。在这种情况下,像gearman这样的异步作业系统可能更符合您的要求。

如果您不想运行任何东西:

header('..');
exit;
如果您希望合理地确保其余的运行:

header('..');
ignore_user_abort(true);
实际上,根据HTTP定义,301和302可以包含一个主体。除非请求方法是HEAD,否则响应的实体应该包含一个简短的超文本注释,并带有指向新URI的超链接。事实上,如果您的浏览器支持它,您可以暂时禁用重定向并观看呈现的实际页面。浏览器是在头之后立即执行重定向,还是等待整个请求完成,取决于用户代理本身。例如,在我的经验cookie头中,它将等待所有头,因此在初始重定向头之前还是之后调用它都没有区别,但请确保在任何内容/正文之前发送它


对于ignore_session_abort、Web服务器本身的通常超时以及由于Web服务器本身的设置而导致的断开连接的使用存在限制。如果您有一个需要花费大量时间的进程,那么当Web服务器进程不进行任何HTTP通信时,您不应该让它保持忙碌。在这种情况下,像gearman这样的异步作业系统可能更符合您的要求。

只是让访问者尽可能短地等待重定向。@标记他们需要等待多长时间?半小时?当你想做生意时,每一秒都很重要。@Mark一整秒?您是否在IBM XT上运行服务器?很抱歉,当您试图进行销售时,每一秒的读数都会很重要。只是让访问者尽可能短地等待重定向。@标记他们需要等待多长时间?半小时?当你想做生意时,每一秒都很重要。@Mark一整秒?您是否在IBM XT上运行服务器?对不起,当你试图进行销售时,这应该是每一秒的分数。看起来最后一个是OP ASKSAlquired ignore\u user\u abort应该在标题之前?@Hammerite:为答案添加了一些背景。看起来最后一个是OP ASKSAlquired ignore\u user\u abort应该在标题之前?@Hammerite:为标题添加了一些背景答复