postgreSQL 데이터베이스에서 사용자 작업으로 (기본) 로깅을 사용하고 있습니다. 성능을 향상시키기 위해 모든 로그 삽입을 비동기 적으로 실행하여 스크립트를 계속 진행시키고 로그 항목이 작성 될 때까지 기다리지 않습니다.PostgreSQL을 사용하여 PHP에서 비동기 준비 문을 실행하고 결과를 무시함
SQL 인젝션을 방지하고 필요에 따라로드하기 위해 준비된 구문을 모든 곳에서 사용합니다.
문을 준비 할 때 보류 중의 결과가 이전의 비동기 쿼리에서 페치 될 때 문제가 발생합니다. (PostgreSQL은 새로운 문장을 준비하기 전에 보류 된 결과가 있다고 말합니다.)
따라서 workarround로 모든 보류 결과 (있는 경우)를 모으고 무시하고 PHP와 PostgreSQL을 만족스럽게 작성하여 진술을 준비합니다.
하지만 그 workarround (내가 본 것처럼)로 결과를 수집해야 asyncronously 실행하여 얻을 수있는 성능을 놓친다.
준비된 명령문을 비동기 적으로 실행할 수있는 방법이 있습니까? 그리고 결과를 무시하도록 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);
어떤 도움이 apreciated 될 것이다 그들을 prepairing하고있다.
업데이트 : 사용중인 모든 비동기 쿼리는 INSERT 쿼리 만이므로 이론적으로 결과를 무시해야합니다.
감사합니다. 그 접근 방식은 더 건설적인 답변입니다. :) – StormByte