복붙노트

PHP의 연결 풀링

PHP

PHP의 연결 풀링

J2EE 컨테이너처럼 PHP를 사용할 때 데이터베이스 연결을 캐시 할 수 있습니까? 그렇다면 어떻게?

해결법

  1. ==============================

    1.PHP에는 연결 풀링이 없습니다. mysql_pconnect와 연결 풀링은 두 가지 다른 것들이다. mysql_pconnect와 관련된 많은 문제가 있습니다. 먼저 설명서를 읽고 조심해서 사용해야합니다.하지만 이것은 연결 풀링이 아닙니다.

    PHP에는 연결 풀링이 없습니다. mysql_pconnect와 연결 풀링은 두 가지 다른 것들이다. mysql_pconnect와 관련된 많은 문제가 있습니다. 먼저 설명서를 읽고 조심해서 사용해야합니다.하지만 이것은 연결 풀링이 아닙니다.

    연결 풀링은 응용 프로그램 서버가 연결을 관리하는 기술입니다. 응용 프로그램에 연결이 필요하면 응용 프로그램 서버에 연결을 요청하고 사용 가능한 연결이 있으면 풀로 연결된 연결 중 하나를 응용 프로그램 서버가 반환합니다.

    PHP에서 연결 확장을 수행 할 수있는 링크는 다음과 같습니다. http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html

    그래서 PHP에서 연결 풀링.

    Julio가 말한 것처럼 현재 요청에 대한 요청이 끝나면 apache는 모든 리소스를 해제합니다. mysql_pconnect를 사용할 수는 있지만 그 기능이 제한적이므로 매우 신중해야합니다. 다른 선택은 싱글 톤 패턴을 사용하는 것이지만,이 중 어느 것도 풀링이 아닙니다.

    이것은 좋은 기사입니다 : https://blogs.oracle.com/opal/highly-scalable-connection-pooling-in-php

    또한 이것을 읽으십시오 http://www.apache2.es/2.2.2/mod/mod_dbd.html

  2. ==============================

    2.지속적인 연결은 연결 풀링과 같은 것이 아닙니다. PHP의 지속적인 연결은 동일한 요청 / 스크립트 실행 컨텍스트 내에서 여러 db 연결을 수행하는 경우에만 다시 사용됩니다. 가장 일반적인 웹 개발 시나리오에서 mysql_pconnect를 사용하면 스크립트는 다음 요청시 열려있는 연결에 대한 참조를 얻을 방법이 없으므로 연결 방법을 최대한 빨리 늘릴 수 있습니다. PHP에서 db 연결을 사용하는 가장 좋은 방법은 연결 실행이 스크립트 실행 컨텍스트 내에서 재사용되도록 db 객체의 싱글 톤 인스턴스를 만드는 것입니다. 이것은 여전히 ​​요청 당 최소 1 db 연결을 발생 시키지만 reqeust 당 여러 db 연결을 만드는 것보다 낫습니다.

    지속적인 연결은 연결 풀링과 같은 것이 아닙니다. PHP의 지속적인 연결은 동일한 요청 / 스크립트 실행 컨텍스트 내에서 여러 db 연결을 수행하는 경우에만 다시 사용됩니다. 가장 일반적인 웹 개발 시나리오에서 mysql_pconnect를 사용하면 스크립트는 다음 요청시 열려있는 연결에 대한 참조를 얻을 방법이 없으므로 연결 방법을 최대한 빨리 늘릴 수 있습니다. PHP에서 db 연결을 사용하는 가장 좋은 방법은 연결 실행이 스크립트 실행 컨텍스트 내에서 재사용되도록 db 객체의 싱글 톤 인스턴스를 만드는 것입니다. 이것은 여전히 ​​요청 당 최소 1 db 연결을 발생 시키지만 reqeust 당 여러 db 연결을 만드는 것보다 낫습니다.

    PHP의 본질 때문에 PHP에는 실제 db 연결 풀링이 없습니다. PHP는 요청 사이에 앉아서 열려있는 연결 풀에 대한 참조를 관리 할 수있는 응용 프로그램 서버가 아닙니다. 적어도 중요한 해킹이없는 것은 아닙니다. 이론적으로 PHP에서 응용 프로그램 서버를 작성하고 백그라운드에서 앉아서 여러 개의 db 연결을 열어두고 다른 스크립트에 대한 참조를 전달하는 명령 줄 스크립트로 실행할 수 있다고 생각합니다.하지만 그렇지 않습니다. 그것이 실제로 가능할 수 있는지, 명령 행 스크립트에서 다른 스크립트로 참조를 전달하는 방법을 알고 있는지, 그리고 여러분이 명령 행 스크립트를 풀어 낼 수 있다고하더라도 그것이 잘 수행 될지 의심 스럽다. 어쨌든 그건 대부분 추측이야. 나는 다른 누군가가 php와 같은 prefork 서버에 대한 연결 풀링을 허용하기 위해 apache 모듈에 게시 한 링크를 주목했다. 흥미로운 것 같습니다. https://github.com/junamai2000/mod_namy_pool#readme

  3. ==============================

    3.mod_php를 사용하고 계시 겠지?

    mod_php를 사용하고 계시 겠지?

    PHP 파일이 모두 실행되면 상태가 종료되므로 연결 풀링을 수행 할 방법이 없습니다 (PHP 코드 사용). 대신 확장 프로그램에 의존해야합니다.

    mysql_pconnect를 사용하면 페이지가 끝난 후 연결이 닫히지 않고 다음 요청에서 재사용 할 수있다.

    이것은 필요한 모든 것 일지 모르지만 연결 풀링과 동일하지 않습니다. 열린 채로 유지할 연결 수를 지정할 방법이 없기 때문입니다.

    건배.

  4. ==============================

    4.MySQLi를 사용할 수 있습니다.

    MySQLi를 사용할 수 있습니다.

    자세한 정보는 연결 풀링 섹션 @ http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622로 스크롤하십시오.

    연결 풀링은 서버 (즉, Apache httpd) 및 해당 구성에 따라 달라집니다.

  5. ==============================

    5.연결 풀을 수동으로 인스턴스화 할 수 없습니다.

    연결 풀을 수동으로 인스턴스화 할 수 없습니다.

    그러나 mysql_pconnect 함수로 "내장"연결 풀링을 사용할 수있다.

  6. from https://stackoverflow.com/questions/39753/connection-pooling-in-php by cc-by-sa and MIT license