출발 : | "mark" |
---|---|
to : | |
제목 : | pdo Emulate는 작동하지 않습니다. Pg log에서 여전히 구문 토토 결과 따르면 구문 분석을 받고 있습니다. |
날짜 : | 2011-08-26 03:30:24 |
메시지 -ID : | postgresql : pdo Emulate 준비가 작동하지 않습니다. PG |
보기 : | 원시 메시지 | 전체 스레드 | mbox 다운로드 | 이메일 재판용 |
스레드 : | |
목록 : | PGSQL-PHP |
안녕하세요
나는 우리의 PHP 사람들 중 일부가 준비된 진술을 사용하지 말라고 설득하려고합니다.
이것의 이유는 첫 번째 이유는 우리가 이익을 보지 못하고 있기 때문입니다.
성능 현명한 거의 모든 진술이 준비되고, 실행
그런 다음 거의 모든 경우에 거래했습니다. 다른 때는 아마도
두 번 실행하여 여전히 승리가 아닙니다.
두 번째 이유는 트랜잭션 풀링을 사용할 수 있기를 원하기 때문입니다
pgbouncer. 이것은 주요 원동력입니다.
그래서 누군가가 몇 가지 테스트를 시작하기 위해 약간의 PHP를 으깬다. (더
다른 것보다 오류 사례를 확인하는 것)
우리가 찾은 문제는 "pdo :: attr_emulate_prepares => true"에도 불구하고.
log_min_duration을 0으로 설정했을 때 명세서를 준비하고 있습니다.
나는 PHP 사람이 아니지만 Google을 googed했는데 알아낼 수없는 것 같습니다
아래가 예상대로 작동하지 않는 이유. 우리가하는 일에 대한 팁
잘못? 준비된 진술을 비활성화/에뮬레이션하려면 이것이 어떤 모습입니까?
이것이 효과가 있다면 우리는 볼 수 없을 것으로 기대하고 있습니다
Postgres Log에서 토토 결과 분석, 바인드, 실행, 딜 로이징.
이것이 이런 종류의 잘못 목록이라면 사과드립니다.
-MARK
php
try
// 루프로 실행하여 많은 수의 시간에 시간이 지남에 따라 결과를 얻을 수 있습니다
실행.
$ tstart = microtime (true);
for ($ i = 0; $ i <1; $ i ++)
$ dbh = new pdo ( 'pgsql : host = localhost; dbname = my_mainline',
'postgres', 'postgres', array (pdo :: attr_emulate_prepares => true);
// 예상 사례를 테스트하기 위해 유효한 int로 교체하십시오.
$ rname = 'p1 \'파트너 ';
// 의도적으로 문자열을 정수 열에 묶으려고
무슨 일이 일어나는지보기
// 클라이언트 측 준비 에뮬레이션을 사용할 때와 사용하지 않음.
$ stmt = $ dbh-> 준비 ( "select * from my_reseller where
Reseller_id = : rname ");
$ stmt-> bindparam ( ': rname', $ rname);
$ stmt-> execute ();
/*보고 싶다면 결과를 인쇄하십시오.
foreach ($ stmt-> fetch () as $ row)
print_r ($ 행); print ( "\ n");
}
*/
$ dbh = null;
}
printf ( " %17s : %.4f secs %d 반복, avg : %.6f secs \ n"
, '날짜'
, 마이크로 타임 (True) - $ tstart
, $ i
, (마이크로 타임 (True) - $ tstart)/$ i
);
catch (pdoexception $ e)
인쇄 "오류! :". $ e-> getMessage ().
다이 ();
}
?>
From | 날짜 | 주제 | |
---|---|---|---|
다음 메시지 | ITB348 | 2011-08-26 10:42:03 | Re : PDO Emulate 준비가 작동하지 않습니다. Pg log에서 여전히 구문 토토 결과 따르면 구문 분석을 받고 있습니다. |
이전 메시지 | Herouth Maoz | 2011-08-22 07:50:24 | PHP (및 특히 ZF)는 사용자 유형을 어떻게 처리합니까? |