У меня есть какая-то (базовая) регистрация с действиями пользователя в базе данных postgreSQL.
Чтобы повысить производительность, я выполняю все операции вставки журналов асинхронно, чтобы сценарий продолжался и не ждал, пока не будет создана запись журнала.
Я везде использую подготовленные операторы для предотвращения SQL-инъекций и загрузки их по мере необходимости.
Проблема возникает, когда ожидает результатов, которые нужно извлечь из предыдущего асинхронного запроса, когда я готовлю инструкцию. (PostgreSQL говорит, что есть ожидающие результаты, которые должны быть получены до подготовки нового оператора)
Так что в качестве обходного пути я собираю все ожидающие результаты (если таковые имеются) и игнорирую их, чтобы осчастливить PHP и PostgreSQL перед подготовкой любого оператора.
Но из-за этого обходного пути (как я его вижу) я скучаю по производительности, которую я мог бы получить, выполняя асинхронно, поскольку мне все равно приходится собирать результаты.
Есть ли способ асинхронно выполнить подготовленный оператор и преднамеренно сказать postgres игнорировать результаты?
Внутри моего класса PostgreSQL я вызываю подготовленные операторы с
pg_send_execute($this->resource, $name, $params);
и подготовить их к
//Just in case there are pending results (workarround)
while (pg_get_result($this->resource)!==FALSE);
$stmt = pg_prepare($this->resource, $stmtname, $query);
Любая помощь будет оценена.
ОБНОВЛЕНИЕ: Все асинхронные запросы, которые я использую, являются только INSERT, поэтому должно быть безопасно (теоретически) игнорировать их результаты.