如果我使用一个大型函数来更新MySQL上的数据然后执行header("Location: somepage")
,那么PHP会在所有这些更新查询完成之前等待,然后重定向还是我必须考虑到这一点?
答案 0 :(得分:4)
PHP代码以可预测的顺序模式执行,自上而下。
如果运行某些数据库查询,数据库服务器将处理它们,PHP的线程不处理写入本身(只是传递查询)。
MyISAM表在写入时被锁定,并且我非常确定UPDATE
查询是atomic(意味着他们要么都做或不做 - 他们不会让事情完成一半)
另外,稍微切向一点,发送exit
标题后不要忘记Location
。用户代理可以自由忽略Location
标题。
答案 1 :(得分:4)
是的,PHP将按顺序执行每个命令,并且只有在更新查询报告成功后才会到达重定向语句。
答案 2 :(得分:1)
来自php文档
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等, mysql_query()成功时返回TRUE,错误时返回FALSE。
然后......如果它返回成功或失败,它必须等到更新完成。