由于每个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. 修改系统hosts文件访问github

    C:\Windows\System32\drivers\etc 199.232.69.194 github.global.ssl.fastly.net 140.82.114.4 github.com

  2. 记录自己在对订单进行按日期查询时使用的一种查询的方法,这里的orders是订单表,你也可以改成别的什么表对于最终数据不会造成影响,除非你那个表的数据只有几条那样就会出现查不到日期的情况

    SELECT @date := DATE_ADD(@date, INTERVAL + 1 DAY) days FROM ( SELECT @date := DATE_ADD("2019-06 ...

  3. java.3 Java数据类型1

    数据类型讲解 Java属于强类型语言 即要求变量的使用要严格符合规定,所有变量都必须严格定义以后才能使用 优点:安全性高 缺点:速度慢(相对而言) Java数据类型分为引用类型和基本类型 基本数据类型 ...

  4. notepad++ 编写html代码快捷键切换到浏览器查看

    1.右键chrome属性,查看目标C:\Users\duanx\AppData\Local\Google\Chrome\Application\chrome.exe 2.然后notepad运行,输入如 ...

  5. h5:vue3 + ts + vite + vuex + axios + vant4 + scss + postcss+mockjs+element-plus

    模板地址:https://gitee.com/zhang_meng_lei/mobile-template-h5-vue3/tree/master 1.安装element-plus:yarn add ...

  6. localStorage/sessionStorage/cookie

    html5本地存储主要有两种localStorage和sessionStorage        都是使用相同api,存入后都是字符串类型 localStorage和sessionStorage使用方 ...

  7. k8s资源清单

    资源清单就是k8s当中用来定义pod的文件,语法格式遵循yaml语法,在yaml当中可以定义控制器类型,元数据,容器端口号等等等....,也可以针对于清单对pod进行删除等操作. 我们可以用kubec ...

  8. Mysql数据库基础第三章:DML语言

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  9. 结构体struct

    在 C# 中,结构体是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构体. 结构体是用来代表一个记录.假设您想跟踪图书馆中书的动态.您可能想跟踪每本书 ...

  10. pyhon&QT编译

    1.编译qrcpyrcc5 -o ico_rc.py ./ico/ico.qrc.qrc文件格式<RCC> <qresource prefix="/"> & ...