由于每个pconnect所建立的连接信息和单个进程绑定。线上偶发了redis在某一台机器php-fpm上连接正常而无法进行任何操作的问题。

先说结论

查看redis拓展官方文档 close方法 有一句提示

Closing a persistent connection requires PhpRedis >= 4.2.0

证明最新版本close方法已经可以正常的关闭连接了 即直接使用close 再重新连接即可。而老版本则没有方法对单个进程的连接信息进行关闭或者更新。

目前网上关于pconnect长连接的关闭有如下描述

如果代码中使用pconnect, close的作用仅是使当前php不能再进行redis请求,但无法真正关闭redis长连接,连接在后续请求中仍然会被重用,直至fpm进程生命周期结束。

此结论来源于文章 https://www.cnblogs.com/huanxiyun/articles/6554670.html

而最新版predis经过验证
版本 php 7.0.33
php拓展 redis版本 php —ri redis查看为 5.3.2

结论和文章所述不同 在此更新下较老的结论

本地验证的结果 close会关闭当前的连接。如果在close后调用新的redis命令,则pconnect会重新连接到redis。

如果unset掉redis连接对象。则无法再找到当前连接到信息。意味着我们无法使用当前对象的信息继续发送任何命令。但是我自己的验证是无法关闭连接的。

而在4.2.0版本前 则:

close不会关闭连接。也仍然可以发送redis命令。

我没有找到unset可以关闭单个进程的pconnect连接的方法。

Stack overflow 上有关于此类情景的讨论,意思就是使用pconnect如果redis切换主从连接失败如何重置连接

https://stackoverflow.com/questions/32916465/how-to-close-or-reset-a-pconnect-connection-when-using-phpredis-and-php-fpm

验证脚本

<?php

$redis = new Redis();
$redis->pconnect("127.0.0.1", 6379); echo $redis->echo("1th time").PHP_EOL;
sleep(15); $redis->close();
//unset($redis);
echo $redis->echo("2th time").PHP_EOL;

sleep(15);

查看连接信息

redis下  client list

linux下 ps -ef | grep php | grep -v grep | awk '{print $2}' | xargs lsof -n -p | grep 6379

 
 
 
 

关于php pconnect长连接如何刷新连接的讨论的更多相关文章

  1. HTTP的长连接和短连接——Node上的测试

        本文主要从实践角度介绍长.短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP.Ajax做客户端请求测试,最后简单涉及WebSocket.     关键字:长连接.短连 ...

  2. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...

  3. HTTP协议中的短轮询、长轮询、长连接和短连接

    HTTP协议中的短轮询.长轮询.长连接和短连接 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接 ...

  4. (转)对Http协议的长连接和短连接新的认识

    转载来自:http://www.cnblogs.com/zuoxiaolong/p/life49.html一直对长连接短连接模模糊糊,看着该博主的文章,豁然开朗~ 引言 最近刚到公司不到一个月,正处于 ...

  5. HTTP协议中的短轮询、长轮询、长连接和短连接,看到一篇文章有感

    关于短轮询.长轮询 短轮询主要是前端实现,JS写个死循环,不停的去请求服务器中的库存量是多少,然后刷新到这个页面当中,这其实就是所谓的短轮询. 长轮询主要取决于服务器,在长轮询中,服务器如果检测到数据 ...

  6. Socket的长连接和短连接

    讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...

  7. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  8. java如何实现Socket的长连接和短连接

    讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...

  9. 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...

  10. http的长连接和短连接(史上最通俗!)

    1.以前的误解 很久之前就听说过长连接的说法,而且还知道HTTP1.0协议不支持长连接,从HTTP1.1协议以后,连接默认都是长连接.但终究觉得对于长连接一直懵懵懂懂的,有种抓不到关键点的感觉. 今天 ...

随机推荐

  1. ubuntu iptables 做为路由转发

    实现功能,本地服务器的号段的192.168.8.0/24,而做为路由器的机器有2个ip,192.168.8.x和另一个ip,而另一个ip可以访问 192.168.2.0/24号段, 为了让其它192. ...

  2. C# 开源NuGet插件

    ExcelDataReader  开源免费,Excel读取插件 GitHub - ExcelDataReader/ExcelDataReader: Lightweight and fast libra ...

  3. css 启动页 loading动画

    <div class="index-html-loader"> <div class="text">Loading...</div ...

  4. 在vite中怎么批量注册组件

    1. 在webpack中使用require来获取组件 / 参数:1. 目录 2. 是否加载子目录 3. 加载的正则匹配 //匹配当前文件夹下的所有.vue文件 注册全局组件 const importF ...

  5. 运用python中装饰器方法来解决工作中为原有代码添加功能问题

          Python  装饰器 在实际的工作中,经常碰到领导或产品经理会提出很多甚至(变态)的产品要求,作为python开发,好不容易完成领导的需求,做出一个产品,并且经过测试成功上线.突然有一天 ...

  6. CF850F 题解

    题意 传送门 有一袋 \(n\) 个颜色球,第 \(i\) 个颜色的球有 \(a_i\) 个. 当袋子里至少有两个不同颜色的球时,执行以下步骤: 一个接一个的按照顺序随机取出两个的球,这些球的颜色可能 ...

  7. 1996. 游戏中弱角色的数量 (Medium)

    问题描述 1996. 游戏中弱角色的数量 (Medium) 你正在参加一个多角色游戏,每个角色都有两个主要属性: 攻击 和 防御 .给你一个二维整数数组 properties ,其中 properti ...

  8. /etc/login.defs 创建用户的默认设置文件

    /etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等.需要注意的是,该文件的用户默认配置 ...

  9. (读书笔记)基于CMMI的软件工程及实训指导(13-16章)

    软件测试 1.定义: 使用人工或自动的手段来运行或测试某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别. 简单来说,软件测试是为了发现程序中的错误而执行的过程. ...

  10. Java基础——(综合练习)普通加密

    package com.zhao.test; public class Test18 { /*需求: ​ 某系统的数字密码(大于0),比如1983, 采用加密方式进行传输. 规则如下: ​ 先得到每位 ...