PHP - Как ждать записи диска после вызова commit?

Я использую postgresql. Я должен вызвать JAR-файл, который выполняет некоторые операции после чтения БД, в сценарии php.

$ connection - это PDO. Я заметил следующее поведение:

Сценарий 1:

$connection->commit();

exec_shell(java -jar jarname) //it does not give expected behaviour

Сценарий 2:

$connection->commit();

sleep(60);

exec_shell(java -jar jarname) //it does give expected behaviour

Итак, вопрос: как ждать, пока commit записывает все данные на диск, прежде чем продолжать с инструкциями?

fsync включен в postgres.conf синхронный_коммит включен в postgres.conf

1 ответ

У меня нет опыта работы с PDO, но если вы можете проверить результат коммита, вы можете попробовать что-то вроде этого:

$commit_status = $connection->commit();
if($commit_status === TRUE)
{
  exec_shell(java -jar jarname)
}

Пока у вас нет ответа от состояния коммита, exec_shell не будет вызываться

Другие вопросы по тегам