php-connect-pool

PDO/Redis 连接池
授权协议 Apache
开发语言 C/C++ PHP
所属分类 程序开发、 数据库连接池
软件类型 开源软件
地区 国产
投 递 者 邰英毅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

php-connect-pool 是一个专门为 PHP 的 apache/php-fpm 设计的 PDO/Redis 连接池。提供连接池、读写分离、负载均衡、慢查询日志、大数据块日志等功能。

要求

  • PHP 5.3 + (no zts)
  • linux 2.6+
  • pdo and redis extension install

技术特性

  • 提供了release方法,在每次fetch数据后(redis的get set) 调用,将连接放回到池子里面,避免其他耗时操作导致的db层连接数过高问题。
  • 提供最大最小连接数配置支持。
  • 连接自动ping 数据库, 防止压力小长时间不请求导致的gone away问题
  • 根据压力自动获取(最大到最大连接数)或者释放(释放最小到最小连接数)池子里面的连接。
  • 做了大量优化虽然请求经过代理进程转发但基本没有性能损耗.
  • 当池子里面的连接被占用没了,接下来的挣钱连接的进程将会排队,直到持有连接的进程release连接.
  • 使用透明化,相对于传统的pdo和redis操作,只需要修改new的类名,以及适当时机release连接即可(可以集成到db层框架)
  • 支持pdo的读写分离和从库的负载均衡。
  • 支持cli模式下的pdo和redis异步查询。
  • 支持慢查询日志(max_hold_time_to_log)以及大的数据块(max_data_size_to_log)日志功能。

示例程序

$db = new pdo_connect_pool('dsn_url');
$redis = new redis_connect_pool();

$db->release();//释放连接
$redis->release();
  • #!/bin/sh # # pool-server Startup script for pool-server # # chkconfig: - 85 15 # processname: pool-server # config: /etc/pool.ini # pidfile: /var/run/php_connection_pool.pid # description: php-cp is

  • 1.通过composer 安装库 $ composer require "open-smf/connection-pool:~1.0" # 该包库只能在swoole 的协程环境下使。 2.引用connection-pool并配置ConnectionPool.php步骤: use Smf\ConnectionPool\ConnectionPool; use Smf\ConnectionPool\Co

  • /* +----------------------------------------------------------------------+ | common con pool | +----------------------------------------------------------------------+ | This source file is subject t

  • 问题 Introduction I want to create a site that is powered by php-fpm, nginx and docker and I want to have php-fpm and nginx on separate containers. To do this, I followed this tutorial but am stuck now

  • 一、背景 早上突然发现服务器这边所有的请求都报错:502,具体报错信息如下: connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: xxx, server: xxx, request: "GET / HTTP/1.1",

  •   1.安装gdb  sudo apt-get install gdb 2.进入php-cp扩展目录(已经编译过了),源码 https://github.com/swoole/php-cp 获取要调试函数的真实函数名 zim_redis_connect_pool_select $ nm connect_pool.so .... 0000000000012170 t zim_redis_conne

  • 1、我是这样建立容器的 php-fpm 容器 docker run -itd --name php-fpm -v /Users/nibuw/Documents/devops/data/wwwlogs/php-fpm.log:/usr/local/php/var/log/php-fpm.log php:7.0.9 运行状态: [root@4469e557bf9b src]# ps uax USER

  • 开发环境:mac 安装软件:homebrew 问题描述:访问域名时出现 connect() to unix:/var/run/php5-fpm.sock failed 我看网上说编辑/etc/php5/fpm/pool.d/www.conf 但是用homebrew 安装的php,我并没有找到;如果您能给予解答,对我来说是莫大的帮助。 回复内容: 开发环境:mac 安装软件:homebrew 问题描

  • ENV: [root@lnmp ~]# uname -r 3.10.0-514.el7.x86_64 [root@lnmp ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 上传或下载php源文件包 下载地址:https://www.php.net/downloads 一:安装php的依赖库文件 yum -y i

  • 一般systemctl在启动nginx和php-fpm的时候默认是以root权限执行的,为了安全起见,nginx和php-fpm会在启动的配置文件中指明他们所需的权限,如nginx的用户文件在/etc/nginx/nginx.conf中,比如下: 默认是nginx用户 user nginx; #这里指明了用户默认nginx worker_processes 1; ...... htt

  • php-fpm 进程池优化方法 2019-05-24 php-fpm进程池开启进程有两种方式,一种是static,直接开启指定数量的php-fpm进程,不再增加或者减少; 另一种则是dynamic,开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到上限,当空闲时自动释放空闲的进程数到一个下限。 这两种不同的执行方式,可以根据服务器的实际需求来进行调整。 1、要

  • 我刚刚将我的网站从apache2移动到Nginx作为我的新Web服务器后端 . 得到了爱问题啊哈 . Web主机导演中的HTML文件在php文件生成主目录之前工作然后我从nginx收到502错误 来自nginx的错误消息:SO认为它是代码:) >tail -f /var/log/nginx/error.log >2018/07/03 15:27:45 [alert] 1275#1275: *48

  • nginx与php-fpm有两种通信方式: tcp socket 和 unix socket。对于第一种,php-fpm通常监听本机的9000端口,对于第二种,php-fpm通常监听本机的一个sock文件。今天遇到一个问题,分别配置并启动nginx和php-fpm后,当nginx处理来自浏览器的PHP文件请求时,log文件中报以下错误: [crit] 14881#14881: *17 connec

  • 1、我是这样建立容器的 php-fpm 容器 docker run -itd --name php-fpm -v /Users/nibuw/Documents/devops/data/wwwlogs/php-fpm.log:/usr/local/php/var/log/php-fpm.log php:7.0.9 运行状态: [root@4469e557bf9b src]# ps uax USER

  • 在我的流浪者盒子,分7,我安装了php7.0.3和nginx 1.9.12. php配置www.conf.这个文件在/usr/local/php/etc/php-fpm.d/目录下,其配置如下 user = www group = www ;listen = /tmp/php-fpm.sock listen = 127.0.0.1:9000 listen.owner = www listen.gr

  • 《什么是SAPI,FastCGI,PHP-FPM?学习PHP的必备知识》这篇文章讲解了一些基础知识,写这篇文章的根本原因是自己在部署Nginx+PHP-FPM的时候遇到了二个问题。今天我就回顾下当时遇到的一个502错误(另外一个问题有机会再讲),以及最后的解决方法,大家也别小看这个502错误,充分理解非常必要,希望通过这篇文章大家能够学到一些知识。 在我这个案例中,Nginx通过FastCGI协议

  • Nginx  站点配置ThinkPHP5.1时,报错PHP-FPM connect() to unix:/tmp/php5-fpm.sock failed (2: No such file or directory)解决办法 更改/etc/php/5.6/fpm/pool.d/www.conf文件 sudo vim /etc/php/5.6/fpm/pool.d/www.conf ##更改第38行

  • nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。 服务器出现502的原因是连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错 因此如果你服

  • As flushed out in the comments, it appears you are running Security-Enhanced Linux (SELinux) which adds an extra layer of security at the kernel level. In my experience and usage, I found that SELinux

 相关资料
  • 问题内容: 我是Redis的新手…我最近刚拿起Redisent来在PHP中使用Redis …并且我玩得很开心!但是,我注册了Redis服务,并一直在努力使用该服务… URI字符串如下: redis:// [用户名]:[pass] @ [服务器] .redistogo.com:[端口] / Redisent客户端只需输入主机名和端口…并且我没有地方输入用户名/密码…:-/我也一直在摆弄fsockop

  • AWS Direct Connect允许从我们的网络到AWS位置创建专用网络连接。 它使用802.1q VLAN,可以将其划分为多个虚拟接口,以使用相同的连接访问公共资源。 这导致网络成本降低和带宽增加。 可以根据需要随时重新配置虚拟接口。 使用AWS Direct Connect的要求 我们的网络必须满足以下条件之一才能使用AWS Direct Connect - 我们的网络应位于AWS Dir

  • Connect 让一个可连接的Observable开始发射数据给订阅者 可连接的Observable (connectable Observable)与普通的Observable差不多,不过它并不会在被订阅时开始发射数据,而是直到使用了Connect操作符时才会开始。用这个方法,你可以等待所有的观察者都订阅了Observable之后再开始发射数据。 RxJava中connect是Connectab

  • 主要内容:Redis 连接,1.Auth 命令,2.Echo 命令,3.Ping 命令,4.Quit 命令,5.Select 命令Redis 连接 Redis 连接命令主要是用于连接 redis 服务。 1.Auth 命令 Redis Auth 命令用于检测给定的密码和配置文件中的密码是否相符。 密码匹配时返回 OK ,否则返回一个错误。 2.Echo 命令 Redis Echo 命令用于打印给定的字符串。 3.Ping 命令 Redis Ping 命令使用客户端向 Redis 服务器发送一个

  • 问题内容: Node.js异步I / O是否需要Redis连接池? 我看到的大多数Redis库都允许您创建客户端连接,但是连接池模块并不多,因此我认为它并不那么重要。 令我困惑的一件事是,Redis在一个Redis实例中默认具有16个不同/分段的数据库。 因此,如果创建一个连接池,则连接到16个数据库中的哪个数据库?您可以使用同一连接池一次连接所有16个吗? 是否存在一个Node.js Redis

  • 问题内容: 在Redis上使用node_redis Node.js模块时,我应该只使用一个连接,因为Redis是单线程进程,还是应该创建一个连接池来提高性能? 问题答案: 只需使用一个连接。这两个节点和Redis的是 有效的 单个线程。我认为拥有多个连接不会给您带来任何好处。在开始使用Redis进行开发之前,我问过类似的问题,似乎一个客户端/一个应用程序是非常有效的模式。

  • 本文向大家介绍redis查看连接数及php模拟并发创建redis连接的方法,包括了redis查看连接数及php模拟并发创建redis连接的方法的使用技巧和注意事项,需要的朋友参考一下 max_redis.php link_redis.php redis查看当前连接数 [root@localhost ~]# cd /usr/local/redis-3.0.6 [root@localhost src]

  • 连接中间件 有了连接中间件,无论Stylus片段什么时候改变,这些片段都能够自动编译。 stylus.middleware(options) 选项 返回给定options下的连接中间件。 `serve` Serve the stylus files from `dest` [true] `force` Always re-compile `src` Source dir