Workerman이 mysql 연결 풀을 작성합니다.
먼저 연결 풀링이 사용되는 이유와 연결 풀이 어떤 문제를 해결할 수 있는지 이해해야 합니다.
연결 풀링의 주요 기능
1 TCP 연결을 설정하기 위한 세 번의 핸드셰이크 비용을 줄입니다. 데이터 서버와 네 손을 흔들어 연결을 종료함으로써 클라이언트와 mysql 서버의 부하를 줄이고 요청 응답 시간을 단축합니다
2. 데이터베이스의 동시 연결 수를 줄입니다. 즉, 문제를 해결합니다. 너무 많은 응용 프로그램 서버로 인해 데이터베이스에 연결이 너무 많습니다
문제를 해결하려면 1
그러면 작업자만 데이터베이스 연결 풀은 가장 효율적인 방법은 아니지만 문제를 요구합니다. PHP는 단일 프로세스 및 단일 스레드이기 때문에 PHP를 사용하여 데이터베이스 연결 풀을 구현하려면 별도의 프로세스가 필요하며, 이는 프로세스 간 통신을 포함하므로 원래 mysql과의 직접 통신이 연결 풀을 사용하는 프로세스가 되고 다시 . MySQL 통신은 애플리케이션 측의 부하를 증가시킵니다.
문제 1을 해결하는 가장 효율적인 방법은 각 비즈니스 프로세스에 대해 데이터베이스 싱글톤(예: Workerman에서 제공하는 DB 클래스)을 설정하여 영구 데이터베이스 연결을 구현하여 각 프로세스의 모든 요청이 자체 영구 데이터베이스 연결을 사용하도록 하는 것입니다. , 전체 프로세스 수명주기에서 단 하나의 TCP 핸드셰이크 및 연결 해제 웨이브 오버헤드가 있으며 애플리케이션은 연결 풀과 같은 프로세스 간 IPC 통신의 중간 계층이 없으며 성능이 가장 높습니다. 그들을.
질문 2의 경우
먼저 보유한 애플리케이션 서버 수와 각 서버가 mysql에 대해 동시 연결 수를 확인하세요. 응용 프로그램 서버가 10개만 있고 각 서버에 50개의 프로세스가 있으며 각 프로세스에 1개의 데이터베이스 연결이 있는 경우 mysql 서버에 대한 동시 연결은 총 10*50=500개(활성 연결 아님)이고 동시 연결 수는 500개입니다. mysql 연결 문제 2를 해결하기 위해서는 연결 풀을 사용할 필요가 없습니다.
1,000개의 응용 프로그램 서버가 있는 경우 연결 풀이 필요하지만 이 연결 풀은 1,000개의 응용 프로그램 서버에 대해 1,000개의 연결 풀이 있기 때문에 로컬 응용 프로그램 서버에서 실행되는 연결 풀이 될 수 없습니다. 10개의 연결만 열면 데이터베이스 연결 수가 쉽게 채워집니다. 따라서 현재 서버에서 몇 가지 작업 프로세스를 열어 연결 풀을 구현한다고 해서 이 문제가 해결될 것이라고 기대하지 마십시오.
1,000개의 애플리케이션 서버 클러스터에서 각 서버에 여러 프로세스를 설정하여 연결 풀링을 구현하는 것도 신뢰할 수 없는 방법입니다. 문제 2를 해결하는 실질적인 방법은 독립적인 데이터베이스 연결 풀 서버나 클러스터를 구축하여 모든 데이터베이스 링크를 전역적으로 관리하는 것입니다.
요약하자면,
질문 1에 대해서만 PHP의 mysql 연결 풀을 구현하는 경우 데이터베이스 싱글톤은 소위 연결 풀보다 더 간단하고 효율적인 접근 방식입니다.
질문 2를 실현하려면 비즈니스가 일정한 규모를 갖춰야 합니다. 실제로 Workerman을 사용하여 별도의 연결 풀 클러스터를 생성하려면 다음과 같은 간단한 방법으로 몇 가지 작업 프로세스를 생성하고 그에 대한 데이터베이스를 생성합니다. 연결 후 작업 프로세스는 sql 요청을 받아 mysql 서버로 보냅니다. mysql 서버가 반환된 후 작업 프로세스는 결과를 sql 개시자에게 보냅니다.
연결 풀 코드는 다음과 유사합니다. 여러 서버로 구성된 연결 풀 클러스터인 경우 앞에 lvs
// task worker,使用Text协议 $task_worker = new Worker('Text://0.0.0.0:1234'); $task_worker->count = 64; $task_worker->name = 'MysqlTask'; $task_worker->onMessage = function($connection, $sql) { // 执行sql.... 得到结果,这里省略.... $sql_result = your_mysql_query($sql); // 发送结果 $connection->send(json_encode($sql_result)); };
를 추가하여
use \Workerman\Connection\AsyncTcpConnection; // 与远程连接池服务建立异步链接,ip为远程连接池服务的ip,如果是集群就是lvs的ip $sql_connection = new AsyncTcpConnection('Text://ip:1234'); // 发送sql $sql_connection->send("SELECT ... FROM ....."); // 异步获得sql结果 $sql_connection->onMessage = function($sql_connection, $sql_result) { // 这里只是打印结果 var_dump(json_decode($task_result)); }; // 执行异步链接 $sql_connection->connect();
를 호출하는 것이 가장 좋습니다. workerman tutorial 칼럼을 주목해주세요.
위 내용은 Workerman이 mysql 연결 풀을 작성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

다음 단계를 통해 phpmyadmin을 열 수 있습니다. 1. 웹 사이트 제어판에 로그인; 2. phpmyadmin 아이콘을 찾고 클릭하십시오. 3. MySQL 자격 증명을 입력하십시오. 4. "로그인"을 클릭하십시오.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

Navicat Premium을 사용하여 데이터베이스 생성 : 데이터베이스 서버에 연결하고 연결 매개 변수를 입력하십시오. 서버를 마우스 오른쪽 버튼으로 클릭하고 데이터베이스 생성을 선택하십시오. 새 데이터베이스의 이름과 지정된 문자 세트 및 Collation의 이름을 입력하십시오. 새 데이터베이스에 연결하고 객체 브라우저에서 테이블을 만듭니다. 테이블을 마우스 오른쪽 버튼으로 클릭하고 데이터 삽입을 선택하여 데이터를 삽입하십시오.

응용 프로그램을 열고 새로운 연결 (Ctrl n)을 선택하여 Navicat에서 새로운 MySQL 연결을 만들 수 있습니다. "MySQL"을 연결 유형으로 선택하십시오. 호스트 이름/IP 주소, 포트, 사용자 이름 및 비밀번호를 입력하십시오. (선택 사항) 고급 옵션을 구성합니다. 연결을 저장하고 연결 이름을 입력하십시오.

Navicat에서 SQL을 수행하는 단계 : 데이터베이스에 연결하십시오. SQL 편집기 창을 만듭니다. SQL 쿼리 또는 스크립트를 작성하십시오. 실행 버튼을 클릭하여 쿼리 또는 스크립트를 실행하십시오. 결과를 봅니다 (쿼리가 실행 된 경우).

데이터베이스에 연결할 때의 일반적인 오류 및 솔루션 : 사용자 이름 또는 비밀번호 (오류 1045) 방화벽 차단 연결 (오류 2003) 연결 시간 초과 (오류 10060) 소켓 연결 (오류 1042) SSL 연결 오류 (오류 10055) 너무 많은 연결 시도가 차단되는 경우 (오류 1049) 데이터베이스에 연결되지 않음 (오류 1049) 데이터베이스에 연결되지 않습니다 (오류 1049).
