Учитывая некоторый код, подобный этому …
$rs = $dbh->prepare("insert some stuff into the database ?"); $rs->Execute(array($somevalues)); header("Location: http://somewebpage.com"); exit;
Есть ли способ заставить PHP ждать обновления базы данных до того, как она обработает часть заголовка кода?
У меня есть страница, которая обновляет данные. Я хочу вернуться на «новую» страницу, чтобы пользователи могли обновлять ее без приглашения браузера на повторную отправку данных. Проблема в том, что перенаправление и загрузка страницы слишком быстрая. Он загружает данные из базы данных до завершения предыдущей операции с базой данных, поэтому похоже, что обновление не произошло на перезагруженной странице. Я мог бы добавить ручную задержку, но это слишком грубо. Я хочу, чтобы PHP-код просто дождался обновления базы данных до того, как он сделает что-нибудь еще.
Edit – 04Dec11: похоже, это была простая проблема кэширования браузера. Я добавил header("Cache-Control: no-cache, must-revalidate");
в верхней части страницы, и теперь он работает так, как ожидалось.
Возможно, это просто кеш браузера;)
PHP не является асинхронным, поэтому все операции будут блокироваться. Включая SQL-запросы. Здесь должно произойти что-то еще.
Похоже на возможную проблему репликации, если вы используете настройку master-> slave?