宁泽林_NiZerin - 互联网技术博客

  • 首页
  • 交流群
  • 关于我
  • 留言版
  1. 首页
  2. Laravel
  3. 正文

Laravel,PHP 如何使用数据库连接池提高性能

2018年12月9日 4005点热度 0人点赞 1条评论

数据库连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

需要

  • PHP 7.0+
  • SWOOLE 2.1+
  • SMProxy
  • Laravel
  • MySQL

1.安装swoole

pecl install swoole

2.安装SMProxy

(推荐)直接下载最新发行版的 PHAR 文件,解压即用:
https://github.com/louislivi/smproxy/releases/latest
file

下载前两个压缩包中的一个

或者使用 Git 切换任意版本:

git clone https://github.com/louislivi/smproxy.git
composer install --no-dev # 如果你想贡献你的代码,请不要使用 --no-dev 参数。

3.配置数据库连接池

假设MySQL数据库账号为root 密码为654321 库名为 test

编辑SMProxy 的conf/database.json文件
{
  "database": {
    "account": {
      "root": {
        "user": "root",//数据库账号
        "password": "654321"//数据库密码
      }
    },
    "serverInfo": {
      "server1": {
        "write": {//写库
          "host": "127.0.0.1",//数据库地址
          "port": 3306,
          "timeout": 0.5,//连接超时时间
          "flag": 0,
          "account": "root"
        },
        "read": {//读库,没有可删掉read列 或填写与写库数据一致内容
          "host": "127.0.0.1",
          "port": 3306,
          "timeout": 0.5,
          "flag": 0,
          "account": "root"
        }
      },
    "databases": {
      "test": {
        "serverInfo": "server1",
        "startConns": "swoole_cpu_num()*10",
        "maxSpareConns": "swoole_cpu_num()*10",
        "maxSpareExp": 3600,
        "maxConns": "swoole_cpu_num()*20",
        "charset": "utf-8"
      }
    }
  }
}
随后配置SMProxy 的账号密码 在conf/server.json文件
{
  "server": {
    "user": "SMProxy", //SMProxy账号
    "password": "SMProxy", //SMProxy密码
    "charset": "utf8mb4",
    "host": "0.0.0.0",
    "port": "3366",
    "mode": "SWOOLE_PROCESS",
    "sock_type": "SWOOLE_SOCK_TCP",
    "logs": {
      "open":true,
      "config": {
        "system": {
          "log_path": "ROOT/logs",
          "log_file": "system.log",
          "format": "Y/m/d"
        },
        "mysql": {
          "log_path": "ROOT/logs",
          "log_file": "mysql.log",
          "format": "Y/m/d"
        }
      }
    },
    "swoole": {
      "worker_num": "swoole_cpu_num()",
      "max_coro_num": 6000,
      "open_tcp_nodelay": true,
      "daemonize": true,
      "heartbeat_check_interval": 60,
      "heartbeat_idle_time": 600,
      "reload_async": true,
      "log_file": "ROOT/logs/swoole.log",
      "pid_file": "ROOT/logs/pid/server.pid"
    },
    "swoole_client_setting": {
      "package_max_length": 16777216
    },
    "swoole_client_sock_setting": {
      "sock_type": "SWOOLE_SOCK_TCP"
    }
  }
}
启动SMProxy服务

./SMProxy start

配置Laravel数据库信息

.env文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3366
DB_DATABASE=test
DB_USERNAME=SMProxy
DB_PASSWORD=SMProxy
测试Laravel是否能够正常连接数据库
  • 出现错误请检查SMProxy日志

配置完成

SMProxy 文档

https://github.com/louislivi/SMProxy/blob/master/README.md
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: laravel php
最后更新:2018年12月9日

NiZerin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • 外汇账户托管

    文章不错,已阅

    2018年12月10日
    回复
  • 取消回复

    NiZerin

    这个人很懒,什么都没留下

    本站小程序

       

    内容将于本站同步

    本站公众号

    每周推送最新前沿技术文章

    最新 热点 随机
    最新 热点 随机
    Laravel 8 性能优化自查清单 Laravel 7 已停止维护 Laravel: 新的发行时间表(2021 后改为一年一更) PHP8 已经发布,来看看有哪些新特性吧 Laravel 8 将于9月8日发布! Laravel 重大安全更新
    Laravel 7 已停止维护Laravel: 新的发行时间表(2021 后改为一年一更)Laravel 8 性能优化自查清单
    100 个常见的 PHP 面试题和答案分享 基于Vue组件化的日期联动选择器功能的实现代码 html5如何实现简单进度条效果?动态进度条的实现(代码示例) 开发 | 无需后端编码,手把手教你把 WordPress 做成小程序 Laravel 7 发布在即,过来看下有哪些新功能 [译]使用 TDD 测试驱动开发来构建 Laravel REST API
    标签聚合
    flutter react node php go laravel javascript vue translations wordpress
    最近评论
    发布于 1 周前(04月09日) 还不错
    发布于 3 周前(03月25日) > 您可以添加到收藏夹,以后常来看看 我添加啦,常来,一定。
    发布于 4 周前(03月19日) 不错
    发布于 1 个月前(03月07日) 哈哈哈哈
    发布于 1 个月前(03月07日) 哈哈哈哈哈
    友情链接
    • 科学上网
    • 阿里云特惠
    • 宝塔运维特惠
    • PHP函数字典

    COPYRIGHT © 2021 宁泽林_NiZerin - 互联网技术博客. ALL RIGHTS RESERVED.

    THEME KRATOS MADE BY VTROIS