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

Я использую 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

0

Решение

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]