2013-03-03 1 views
2

나는 내 PHP 코드 중 일부를 최적화하려고합니다. 나는 내 PHP 스크립트의 대부분의 시간이 스크립트의 시작 부분에서 내 mysql 데이터베이스에 연결하는 동안 소비된다는 것을 알았다.PHP로 MySQL 데이터베이스에 연결하는 방법은 없나요?

처음에는 데이터베이스에 한 번만 연결하고 스크립트 끝 부분에서는 데이터베이스 연결을 닫습니다.

그러나이 페이지를 요청하는 사용자마다 새로운 연결을 설정해야합니다.

데이터베이스에 대한 참조를 보유하고 모든 요청에 ​​대해 공유하는 방법이 있습니까?

+0

은 어떻게 생각 "나는 대부분의 시간을 ... 것으로 생각?" 당신은 실제로 그것을 테스트 했습니까? 이런 종류의 일을하는 것은 병목 현상이 어디에 있는지 테스트하지 않고는 쓸모가 없습니다. – PeeHaa

+0

테스트를 마쳤습니다. ;) –

+0

캐싱을 조사 할 수도 있습니다. – PeeHaa

답변

2

(PDO 용도로는 PDO::ATTR_PERSISTENT => true) 연결을 지속 할 수는 있지만, 귀하의 스크립트가 MySQL에 연결하는 데 많은 시간을 소비하고 거기에 약간의 개선이 필요한 이유를 알아내는 것이 좋습니다. DNS를 해결하는 데 필요한 시간을 제거하는 대신 호스트 이름의

  • 를 사용하여 MySQL 서버의 IP :

    이를 생각해 보자.

  • 안 MySQL의 autocompletition : (my.cnf에서 코멘트 skip-auto-rehash)
  • 당신이 계속해서 또 다시 같은 일을 반환합니다 쿼리를 많이 할 경우, 쿼리 결과를 캐시에 캐싱 시스템을 사용하는 것이 좋습니다.
  • codereview.stackexchange.com에 코드를 게시하면 코드 개선에 대한 전문 지식을 활용할 수 있습니다. 문제를 디버깅하도록 더
  • , MySQL 서버에 콘솔을 연결하고 연결 변경 데이터베이스 선택을 여는 데 필요한 시간을 확인 등
5

예, 가능합니다.

당신이 MySQLi 확장 사용하는 경우 (마지막에 내가없이 이전은 오래된 입니다!), 인스턴스를 생성 할 때 호스트 이름에 접두어로 p:을 전달하여 영구 연결을 만들 수 있습니다 :

mysqli::__construct을 참조하십시오.

이전 MySQL 확장 프로그램을 실제로 사용하는 경우 영구 연결에 대해 mysql_pconnect이 있습니다. 당신이 PDO를 사용하는 경우


또는, 당신은 PDO::ATTR_PERSISTENT를 사용하는 setAttribute()를 사용할 수 있습니다.

PDO에서 영구 연결 사용에 관한 문서.

+3

나는 downvote의 이유를 알 수 있습니까? – hjpotter92

+0

누군가 두 사람 모두에게 복수 할 시간을 가졌던 것처럼 보입니까? – PeeHaa

+0

@PeeHaa 맞춰봐. – hjpotter92

관련 문제