使用标头()进行Php重定向

使用标头()进行Php重定向,php,mysql,Php,Mysql,如果我使用一个大型函数更新MySQL上的数据,然后执行头(“Location:somepage”),PHP会在所有这些更新查询完成之前等待,然后重定向,还是必须对此进行说明?PHP代码是以可预测的顺序模式自上而下执行的 如果您运行一些数据库查询,数据库服务器将处理它们,PHP的线程本身不会处理写入(只是传递查询) MyISAM表在写入时被锁定,而且我很确定更新查询是这样的(这意味着它们要么都会发生,要么不会发生——它们不会让事情半途而废) 另外,在发送位置标题后,不要忘记退出。用户代理可以自由忽

如果我使用一个大型函数更新MySQL上的数据,然后执行
头(“Location:somepage”)
,PHP会在所有这些更新查询完成之前等待,然后重定向,还是必须对此进行说明?

PHP代码是以可预测的顺序模式自上而下执行的

如果您运行一些数据库查询,数据库服务器将处理它们,PHP的线程本身不会处理写入(只是传递查询)

MyISAM表在写入时被锁定,而且我很确定
更新
查询是这样的(这意味着它们要么都会发生,要么不会发生——它们不会让事情半途而废)


另外,在发送
位置
标题后,不要忘记退出
。用户代理可以自由忽略
位置
标题。

是的,PHP将按顺序执行每个命令,并且仅在更新查询报告成功后才会到达重定向语句。

来自PHP文档

对于其他类型的SQL语句,请执行INSERT、UPDATE、DELETE、DROP等操作, mysql_query()成功时返回TRUE,错误时返回FALSE


然后。。。如果返回成功或失败,则必须等待更新完成。

如果是头()之前的移动文件(),该怎么办?php会在重定向之前等待上传吗?@user1091856:这应该转化为一些系统调用,这些系统调用将在头发送回浏览器之前被调用(这与在服务器上移动文件无关)。是的。更准确地说,上传将在PHP代码执行之前完成。
move\u uploaded\u file()
mysql\u query()
都是“阻塞”方法——大多数PHP方法也是如此。这意味着该方法将“阻塞”执行,直到该方法完成,因此不会运行其他代码。PHP的文档将清楚地标记“非阻塞”方法,这些方法在完成工作之前返回控制权——这些是例外,而不是规则。@FrankFarmer:谢谢您的澄清。