2009-12-07 6 views
1

누구나 데이터베이스 연결에 mod_dbd를 사용하는 PHP 확장을 알고 있습니까?PHP와 mod_dbd

우리 응용 프로그램은 원격 데이터베이스에 액세스해야합니다. 아파치 모듈은 mod_dbd를 사용하여 데이터베이스 연결을하고 트랜잭션은 약 200ms 걸립니다. 이제 애플리케이션을 PHP로 변경했으며 동일한 트랜잭션이 600ms 이상 걸립니다. 어떤 종류의 풀링으로 인해 실적이 개선되기를 바랍니다.

mysql_pconnect()을 사용하도록 전환했지만 mod_dbd와 거의 비슷하게 작동하지 않습니다.

답변

1

난 당신이 아마 대답하지만 ...

포기 것을 알고 난 당신이 여분의 시간의 대부분을로드하고 PHP 스크립트를 컴파일하는 것을 찾을 수 있습니다 생각합니다. 이전 응용 프로그램이 apache 모듈이라면 미리 컴파일되어 항상로드되며 아마도 PHP와 비교하여 매우 빨리 작성됩니다.

eaccelerator와 같은 PHP 가속기를 사용해보세요. 공유 메모리와 사전 컴파일 된 스크립트를 사용하여 때로는 PHP 응용 프로그램의 성능을 크게 향상시킵니다.

DC

+0

우리는 PHP 로딩/컴파일 시간이 결정적인 요소가 아니라는 것을 알고 있습니다. 왜냐하면 DB 액세스없이 다른 트랜잭션에서 몇 밀리 초가 증가하기 때문입니다. –

+0

나는 그것에 놀랐다. 시간을 잃어버린 정확한 위치를 결정하기 위해 프로파일 링을 해봤습니까? 그동안 db가 변경되었거나 SQL 쿼리가 달라졌습니까? 인덱스를 사용하지 않거나 잘못된 인덱스를 사용하면 약간의 차이가있을 수도 있습니다. mysql_pconnect는 종종 당신이 찾은 바대로 작동하지 않는다. 나는 항상 php가 pooled connection을 사용하는 것이 좋을 것이라고 생각 해왔다. 하지만 pconnect는 프로세스 당 연결입니다. 만약 당신이 그 사실을 모르는 경우에는 php.ini에서 활성화시켜야합니다. – DeveloperChris

0

여러 스레드 풀의 연결을 공유 할 수 있도록 당신이 쓰레드 MPM을 실행해야 mod_dbd의 연결 풀링 기능의 혜택을하기 위해서. 불행히도 PHP는 스레드로부터 안전하지 않으며 스레드 된 MPM을 지원하지 않을 것이라고 생각합니다. 사용하지 않는 PHP에서 데이터베이스 연결에 비해 당신에게 큰 이점을 제공하지 않습니다 (스레드 및 PHP 사용하지 않는 것이 좋습니다) mod_dbd 하나의 영구적 인 데이터베이스 연결을 만듭니다 사전 포크 MPM과 mod_dbd 사용하는 경우

mod_dbd.