私はある種の(基本的な)ロギングをpostgreSQLデータベースのユーザアクションとともに使用しています。 パフォーマンスを向上させるために、すべてのログ挿入を非同期に実行して、スクリプトを続行し、ログエントリが作成されるまで待機しません。PHPでPostgreSQLを使用して非同期プリペアドステートメントを実行し、その結果を無視する
SQLインジェクションを防止し、必要に応じてロードするために、どこにでもプリペアドステートメントを使用します。
が保留中のの結果が、私が文を準備するときに以前の非同期クエリからフェッチされている場合に問題が発生します。
したがって、私はすべての保留中の結果(もしあれば)を収集し、それらを無視して、PHPとPostgreSQLを満足するようにしてから、文を準備します。
しかし、私はそれを見ているように、私は結果を集めなければならないので、私は非同期的に実行することで得られるパフォーマンスを逃してしまいます。
準備された文を非同期的に実行する方法はありますか?結果を無視するようにdeliberatelly postgresに指示しますか?
すべてのヘルプはapreciatedされます私の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);
でそれらをprepairing。
更新:私が使用しているすべての非同期クエリはINSERT文だけなので、結果を無視するのは理論上安全です。
ありがとう、私はより建設的な答えより多くの、そのアプローチ:) – StormByte