최근에 PHP 프로젝트에서 ext/mysql에서 mysqli로 전환했습니다. 이 프로젝트에서 new_link
매개 변수를 false
으로 설정하여 연결 재사용 기능 mysql_connect
을 광범위하게 사용했습니다.Share mysqli connection
내가 이해하는 한, mysqli_connect
에는 그러한 메커니즘이 없습니다. 동일한 호스트와 사용자가 사용 되더라도 항상 새로운 연결을 반환합니다. 이 올바른지? 재사용 동작을 모방 할 수있는 다른 기능이 있습니까?
NB : 호스트 앞에 p:
을 추가하면 영구 연결이 생성됩니다. 그러나, 내 프로젝트의 일부로 임시 테이블을 사용하여 내 경우에는이 사용할 수 없습니다.
업데이트 :
실제 mysqli 개체가 데이터베이스에 대한 액세스를 관리하는 DB 핸들러 클래스에 포함된다. 이 처리기는 항상 DB와 상호 작용하는 데 사용됩니다.
mysqli가 동일한 매개 변수를 사용하여 mysqli_connect
을 여러 번 호출하여 단일 연결을 자동으로 재사용 할 수 있는지 질문에 집중하고 싶기 때문에 문제를 단순화했습니다. 내 프로젝트는 프레임 워크의 확장이며 다중 진입 점과 후크를 제공합니다. 필자는 호스팅 프레임 워크에서 내 확장에 대한 함수 호출의 순서 또는 수를 제어 할 수 없습니다. 내 확장의 각 부분은 DB 핸들러의 인스턴스를 작성하지만 실제 기본 연결을 재사용 할 수 있습니다.
DB 처리기 작성은 db-factory를 통해 수행됩니다. 그래서 나는 확실하게 어떤 종류의 연결을 구현해야 할 것입니다. 직접 캐싱을해야합니다 ...
지속적 연결로 인해 풀을 다시 사용하도록 유지해야하지 않습니까? '지속적인 연결 뒤에있는 아이디어는 클라이언트 프로세스와 데이터베이스 간의 연결을 여러 번 생성하고 파괴하는 것이 아니라 클라이언트 프로세스에서 재사용 할 수 있다는 것입니다. " – Prix
영구 연결을 사용하면 temp에 문제가 발생할 수 있다고 생각했습니다. 테이블을 만들었고 서버 구성을 제어 할 수 없기 때문에이 기능을 사용하지 않을 것입니다. 그러나 같은 스크립트에서 여러 번 영구 연결을 열면 연결을 닫지 않고 * 항상 동일한 연결을 반환하는지 알 수는 없습니다. * –
시행 및 오류;) – Prix