Я использую 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
У меня нет опыта работы с PDO, но если вы можете проверить результат коммита, вы можете
попробуйте что-то вроде этого:
$commit_status = $connection->commit();
if($commit_status === TRUE)
{
exec_shell(java -jar jarname)
}
Пока у вас нет ответа от состояния коммита, exec_shell не будет вызываться
Других решений пока нет …