>  기사  >  PHP 프레임워크  >  swoole을 사용하여 mysql 연결 풀을 만드는 방법

swoole을 사용하여 mysql 연결 풀을 만드는 방법

尚
원래의
2020-01-09 16:07:212526검색

swoole을 사용하여 mysql 연결 풀을 만드는 방법

연결 풀 정의: 절대로 연결을 끊지 마십시오. 프로그램이 메모리 상주 프로그램이어야 합니다. 데이터베이스 연결 풀링(Connection pooling)은 프로그램 시작 실행 시 충분한 데이터베이스 연결을 설정하고 이러한 연결을 연결 풀로 형성하면 프로그램이 풀에서 연결을 동적으로 적용, 사용 및 해제합니다.

연결 풀링 구현 방법:

동기화 차단 모드:

연결 풀은 swoole의 AsyncTask 모듈을 기반으로 구현될 수 있으며 프로그래밍이 간단하고 데이터 동기화 및 잠금 문제가 없습니다. 연결 풀은 여러 서비스에서 공유될 수도 있습니다. 단점은 다음과 같습니다. 1. 멀티스레드 연결 풀만큼 유연하지 않으며 연결을 동적으로 늘리거나 줄일 수 없습니다. 2. 프로세스 간 통신에 오버헤드가 있습니다.

코루틴 모드:

채널을 사용하여 구현할 수 있습니다. 연결 풀.

10개의 mysql 연결 샘플 코드 생성:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/11/20
 * Time: 14:12
 */
//编写mysql连接池,这个类只能被实例化一次(单例)
class MysqlConnectionPool
{
    private static $instance;//单例对象
    private $connection_num = 10;//连接数量
    private $connection_obj = [];

    //构造方法连接mysql,创建20mysql连接
    private function __construct()
    {
        for($i=0;$i<$this->connection_num;$i++){
            $dsn = "mysql:host=127.0.0.1;dbnane=swoole";
            $this->connection_obj[] =  new Pdo($dsn,&#39;root&#39;,&#39;rootmysql123&#39;);
        }
    }
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }
    public static function getInstance()
    {
        if(is_null(self::$instance)){
            self::$instance = new self();
        }
    }
}
MysqlConnectionPool::getInstance();
//创建swool的http服务器对象
$serv = new swoole_http_server(&#39;0.0.0.0&#39;,8000);
//当浏览器链接点这个http服务器的时候,向浏览器发送helloworld
$serv->on(&#39;request&#39;, function($request,$response){
    //$request包含这个请求的所有信息,比如参数
    //$response包含返回给浏览器的所有信息,比如helloworld

    //(2.3)向浏览器发送helloworld
    $response->end("hello world");
});
//启动http服务器
$serv->start();

Effect

swoole을 사용하여 mysql 연결 풀을 만드는 방법

추천 학습: swoole 튜토리얼

위 내용은 swoole을 사용하여 mysql 연결 풀을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.