强制PHP在继续之前等待数据库操作完成

时间:2011-12-03 12:19:34

标签: php redirect pdo

考虑到这样的代码......

$rs = $dbh->prepare("insert some stuff into the database ?");
$rs->Execute(array($somevalues));
header("Location: http://somewebpage.com");
exit;

有没有办法强制PHP在处理代码的“标题”部分之前等待数据库更新?

我有一个更新数据的页面。我想返回一个“新鲜”页面,以便用户可以刷新它而不需要浏览器提示重新提交数据。问题是,重定向和页面加载太快。它在先前的数据库操作完成之前从数据库加载数据,因此看起来更新未在重新加载的页面上发生。我可以添加手动延迟,但这太粗糙了。我希望php代码只是等到数据库更新后才能执行其他操作。

编辑 - 04Dec11:这似乎是一个简单的浏览器缓存问题。我已将header("Cache-Control: no-cache, must-revalidate");添加到页面顶部,现在它按预期工作。

3 个答案:

答案 0 :(得分:9)

PHP不是异步的,因此所有操作都将被阻止。包括SQL查询。还有其他事情要发生在这里。

答案 1 :(得分:1)

也许只是浏览器缓存;)

答案 2 :(得分:0)

听起来像是一个可能的复制问题,如果您使用的是master-> slave设置?