먼저 연결 풀링이 사용되는 이유와 연결 풀이 어떤 문제를 해결할 수 있는지 이해해야 합니다.
연결 풀링의 주요 기능
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

workerman 对比 swoole 实际开发项目中,你会选择哪个?对于新手学哪个较好,有什么建议吗?

如何利用Workerman实现PHP和Unity3D的跨平台游戏联机功能随着移动游戏的兴起,跨平台游戏联机功能成为游戏开发者关注的焦点之一。PHP作为一种广泛应用于Web开发的语言,而Unity3D作为一款强大的跨平台游戏引擎,如何实现二者之间的联机功能成为了开发者们思考的问题。本文将介绍如何利用Workerman实现PHP和Unity3D的跨平台游戏联机功

如何利用PHP和Unity3D开发基于Workerman的实时多人游戏随着游戏行业的不断发展,实时多人游戏成为了一种趋势。而PHP作为一种广泛使用的服务器端脚本语言和Unity3D作为一种流行的游戏开发引擎,如果能够结合起来开发实时多人游戏,将会带来更加丰富的玩法和用户体验。本文将详细介绍如何利用PHP和Unity3D开发基于Workerman的实时多人游戏

PHP和Unity3D如何利用Workerman实现服务器端推送功能在现代的网络应用中,服务器端推送功能(ServerPush)显示了它的强大威力。它可以实时地将信息推送给客户端,而无需客户端不停地向服务器发起请求。在本文中,我们将讨论如何使用PHP和Unity3D结合使用Workerman框架来实现服务器端推送功能。Workerman是一个使用纯PHP编

如何使用Workerman实现PHP和Unity3D的数据统计和分析功能引言:随着互联网的快速发展,数据统计和分析变得愈发重要。在PHP和Unity3D开发过程中,我们经常需要收集和分析用户的行为数据,以便进行产品改进和决策制定。本文将介绍如何使用Workerman这个高性能的PHP开发框架实现PHP和Unity3D之间的数据统计和分析功能。一、Worker

如何使用Workerman实现PHP和Unity3D的多人在线拼图游戏概述:多人在线游戏一直是游戏开发领域的一个热门话题,而拼图游戏作为一种简单、有趣的休闲游戏,也在线上游戏中广受欢迎。本文将介绍如何使用Workerman搭建服务器,并使用PHP和Unity3D开发一个简单的多人在线拼图游戏,实现实时的游戏互动。搭建服务器首先,我们需要搭建一个服务器来提供网

如何使用Workerman实现PHP和Unity3D的多人协同编辑功能引言:在现如今的互联网时代,多人协同编辑已经成为一个非常重要和常见的功能需求。无论是团队合作中的文档编辑,还是多人在线游戏中的场景编辑,都需要实现多人同时编辑同一个文件或场景的功能。本文将介绍如何使用Workerman框架实现PHP和Unity3D的多人协同编辑功能,并提供代码示例。一、什

thinkphp6中怎么使用workerman?下面本篇文章给大家介绍一下thinkphp6整合workerman的教程,希望对大家有所帮助。


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

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

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