校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP使用Redis長連接的方法詳解

PHP使用Redis長連接的方法詳解

熱門標簽:深圳外呼系統收費 400電話辦理福州市 400電話申請方法收費 電話機器人危險嗎 長沙crm外呼系統業務 專業電話機器人批發商 江蘇外呼電銷機器人報價 離石地圖標注 南寧高頻外呼回撥系統哪家好

本文實例講述了PHP使用Redis長連接的方法。分享給大家供大家參考,具體如下:

php-redis在github上的項目地址:https://github.com/phpredis/phpredis

pconnect函數聲明

其中time_out表示客戶端閑置多少秒后,就斷開連接。函數連接成功返回true,失敗返回false:

pconnect(host, port, time_out, persistent_id, retry_interval)
    host: string. can be a host, or the path to a unix domain socket
    port: int, optional
    timeout: float, value in seconds (optional, default is 0 meaning unlimited)
    persistent_id: string. identity for the requested persistent connection
    retry_interval: int, value in milliseconds (optional)

下面的例子詳細介紹了pconnect連接的重用情況。

$redis->pconnect('127.0.0.1', 6379);
$redis->pconnect('127.0.0.1'); // 默認端口6379,跟上面的例子使用相同的連接。
$redis->pconnect('127.0.0.1', 6379, 2.5); // 設置了2.5秒的過期時間。將是不同于上面的新連接
$redis->pconnect('127.0.0.1', 6379, 2.5, 'x'); //設置了持久連接的id,將是不同于上面的新連接
$redis->pconnect('/tmp/redis.sock'); // unix domain socket - would be another connection than the four before.

pconnect使用介紹

對pconnect方法簡單描述

使用該方法創建連接,連接不會在調用close方法之后關閉,只有在進程結束之后該連接才會被關閉。

[待驗證]如果使用的是長連接,Redis配置文件中的timeout配置項需要設置為0,否則連接池中的連接會因為超時而失效

針對PHP-FPM來說明一下pconnect

長連接只會在PHP-FPM進程結束之后結束,連接的生命周期就是PHP-FPM進程的生命周期。
相比較短連接而言,在每一個PHP-FPM調用過程中都會產生一個redis的連接,在服務器上的表性形式就是過多的time_out連接狀態。
而長連接相反,PHP-FPM調用的所有CGI都只會共用一個長連接,所以也就是只會產生固定數量的time_out。

關閉長連接

可以調用close和unset方法,但兩則差異很大:

- close的作用僅僅是使當前PHP進程不能再進行redis請求,但無法真正關閉redis長連接,連接在后續請求中仍然會被重用,直FPM進程生命周期結束。所以close 并不會銷毀redis對象,只是斷開連接而已。

- unset 變量才會銷毀。也需要注意并不是使用了 pconnect 就不要 close 了,如果當前腳本執行時間很長 那么也會一直占用一個連接的。

如何判斷當前Redis是否處于連接狀態

等效的問題是,在單例模式中,判斷當前實例是否有效。

習慣上調用echo,判斷是否正常返回字符串本身,或者調用ping,查看返回值是否為 +PONG。

但是需要特別小心的是,在redis斷開連接之后,調用echo以及ping(返回'+POMG')時,均會拋出異常。所以要通過異常捕獲機制來處理。

代碼分析pconnect連接重用的問題

情況一:非單例模式。

說明:a實例和b實例共用了一條連接,b實例將a實例的連接修改了:
所以下面的例子導致最終$a實例得到的值變成了2,需要特別注意。

$a = pconnect(host, port, time_out);
select(3);
$a -> setex(id, 3);
echo $a -> get(id);
//之后執行下面的連接
$b = pconnect(host, port, time_out);
select(2);
$b->set(id,2)
echo $a->get(id);  //這個id操作的db變成了2,不再是之前的3了。因為這兩個連接共用了一個連接通道。

情況二:單例模式。

將上述的代碼修改,a和b都通過getInstance來生成。生成的前提是判斷當前實例是否存在。單例模式的混淆點在于:

$a生成了一個實例,這時候生成$b, $b使用了$a的實例,然后修改了$a的連接,之后調用$a肯定是調用的$b修改之后的實例。跟情況二一致。
單例模式的代碼如下:

public static function getInstance($db = 0)
{
  if (!isset(self::$_instance)) {
    self::$_instance = new Redis();
  }
  self::_connect();
  self::$_instance->select($db);
  return self::$_instance;
}

兩種情況都說明了連接重用的問題。如何修復這個bug?兩點:

1.為每一個db生成一個單例。
2.避免連接重用問題。

所以代碼可以做調整為返回一個單例數組:

public static function getInstance($db = 0)
{
  try{
    if (isset(self::$_instance[$db])  self::$_instance[$db]->Ping() == 'Pong') {
      return self::$_instance[$db];
    }
  } catch (Exception $e) {
  }
  self::$_instance[$db] = new Redis();
  self::_connect($db);
  return self::$_instance[$db];
}

需要注意的地方

避免在Task類成員變量中使用redis對象。

在redis的單例模式中,聲明了time_out的過期時間。如果redis處理的場合是一個任務,而任務調用redis間隔時間又比較長。當間隔大于time_out時候,redis就會斷開連接,這時候所有對redis的操作都會失效。解決的辦法就是避免這種調用方式,通過在調用的地方動態聲明redis類來執行。這種問題對于長連接和短鏈接是沒有區分,屬于調用的方式錯誤。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php+redis數據庫程序設計技巧總結》、《php面向對象程序設計入門教程》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP長連接實現與使用方法詳解
  • PHP擴展模塊memcached長連接使用方法分析
  • 基于php實現長連接的方法與注意事項的問題
  • PHP set_time_limit(0)長連接的實現分析
  • 基于HTTP長連接的"服務器推"技術的php 簡易聊天室
  • PHP編程實現的TCP服務端和客戶端功能示例
  • php實現TCP端口檢測的方法
  • 詳解PHP Swoole長連接常見問題

標簽:曲靖 南京 興安盟 太原 南昌 株洲 白酒營銷 濱州

巨人網絡通訊聲明:本文標題《PHP使用Redis長連接的方法詳解》,本文關鍵詞  PHP,使用,Redis,長,連接,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP使用Redis長連接的方法詳解》相關的同類信息!
  • 本頁收集關于PHP使用Redis長連接的方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美日韩国产成人在线免费| 国产日韩精品一区| 美国毛片一区二区三区| 欧美一区二区三区色| 麻豆成人久久精品二区三区小说| 精品乱码亚洲一区二区不卡| 国产乱一区二区| 亚洲欧美中日韩| 欧美性感一区二区三区| 日本欧美加勒比视频| 久久这里只有精品6| 成人午夜激情影院| 夜夜精品视频一区二区| 3d动漫精品啪啪一区二区竹菊| 蜜桃av一区二区| 日本一区二区视频在线| 一本色道a无线码一区v| 爽爽淫人综合网网站| 久久综合网色—综合色88| 95精品视频在线| 日韩高清在线一区| 久久久久久久久蜜桃| 色综合天天综合| 日韩精品电影在线观看| 国产婷婷一区二区| 在线亚洲+欧美+日本专区| 麻豆视频一区二区| 综合激情成人伊人| 91精品国产品国语在线不卡| 国产成人a级片| 亚洲国产精品精华液网站 | 波多野结衣在线一区| 亚洲自拍欧美精品| 亚洲精品一区二区精华| 色婷婷一区二区三区四区| 日韩女优毛片在线| 成人网男人的天堂| 午夜国产不卡在线观看视频| 久久久精品国产99久久精品芒果 | 久久人人爽人人爽| 91高清视频在线| 激情图片小说一区| 亚洲乱码国产乱码精品精小说 | 91久久人澡人人添人人爽欧美| 日本美女视频一区二区| 国产精品久久久久久久蜜臀| 日韩丝袜情趣美女图片| 91久久线看在观草草青青 | 国内外成人在线| 一区二区三区四区精品在线视频| 26uuu亚洲| 欧美日韩一本到| 成人av在线一区二区三区| 日韩电影免费一区| 日韩码欧中文字| 久久久亚洲高清| 911精品国产一区二区在线| 成人黄色一级视频| 久久国产生活片100| 亚洲午夜电影在线| √…a在线天堂一区| 欧美精品一区二区三区蜜桃视频| 欧美日韩中字一区| 91在线观看下载| 国产成a人亚洲精品| 久久爱www久久做| 五月综合激情婷婷六月色窝| 亚洲猫色日本管| 国产精品久久久久久久裸模| 久久日韩粉嫩一区二区三区| 91精品国产综合久久婷婷香蕉 | 国产午夜一区二区三区| 91精品国产91热久久久做人人| 色伊人久久综合中文字幕| 国产99一区视频免费| 老司机午夜精品| 日韩高清在线不卡| 亚洲国产美国国产综合一区二区| 日韩一区在线看| 日本一区二区三区免费乱视频| 日韩欧美一级片| 91精品国产aⅴ一区二区| 欧美日韩国产系列| 欧美中文字幕亚洲一区二区va在线 | 亚洲乱码国产乱码精品精小说| 中文字幕精品在线不卡| 久久综合久久综合久久综合| 日韩一区二区三区视频在线 | 欧美三级电影网| 色中色一区二区| 99re亚洲国产精品| av高清不卡在线| av一区二区三区在线| 丁香婷婷综合五月| 国产91丝袜在线播放| 国产成人日日夜夜| 国产激情一区二区三区| 国产一区二区视频在线| 精品中文字幕一区二区| 麻豆专区一区二区三区四区五区| 青娱乐精品视频在线| 日韩电影在线免费| 天堂久久久久va久久久久| 日韩主播视频在线| 日韩国产高清在线| 蜜臀a∨国产成人精品| 蜜臀av国产精品久久久久| 久久国产精品色婷婷| 国产综合色产在线精品| 韩国欧美一区二区| 国产真实乱偷精品视频免| 国产精品 欧美精品| 成人精品视频一区| 99精品欧美一区二区三区综合在线| 成人av动漫在线| 色成年激情久久综合| 欧美日韩视频不卡| 在线播放中文字幕一区| 日韩视频一区二区在线观看| 精品国产制服丝袜高跟| 精品国产一区二区三区四区四| 精品电影一区二区| 日本一区二区三区免费乱视频 | 亚洲专区一二三| 亚洲va天堂va国产va久| 欧美aaaaa成人免费观看视频| 久久激情综合网| 懂色av中文一区二区三区| caoporm超碰国产精品| 在线视频国内一区二区| 欧美群妇大交群的观看方式| 日韩亚洲欧美成人一区| 久久久久国产精品麻豆ai换脸| 中文字幕欧美区| 亚洲欧美日韩在线| 午夜精品成人在线| 激情综合网av| 99热精品国产| 欧美精品日韩一区| 久久丝袜美腿综合| 亚洲三级在线播放| 日韩av不卡在线观看| 国产精品中文字幕日韩精品| 99久久久精品免费观看国产蜜| 欧美日韩三级一区二区| 精品免费国产一区二区三区四区| 亚洲国产精品二十页| 性欧美疯狂xxxxbbbb| 韩国av一区二区| 色婷婷亚洲精品| 精品欧美一区二区久久| 最新国产精品久久精品| 日韩电影免费在线看| 国产成人免费高清| 欧美在线观看视频一区二区| 欧美成人精品3d动漫h| 亚洲日本护士毛茸茸| 日韩av二区在线播放| 成人app软件下载大全免费| 欧美日本韩国一区二区三区视频| 久久精品在线观看| 亚洲一级电影视频| 激情综合网最新| 在线精品视频小说1| 久久欧美一区二区| 亚洲一区二区三区在线看| 精品一区二区三区视频在线观看| 色综合久久66| 久久久久久久电影| 亚洲va国产va欧美va观看| 岛国精品在线播放| 91精品免费在线观看| 中文字幕亚洲在| 久久国产视频网| 欧美日韩一区二区三区高清| 久久精品人人做人人爽97| 亚洲成人自拍一区| jlzzjlzz亚洲女人18| 日韩视频一区在线观看| 亚洲精品成人天堂一二三| 国产乱码精品一区二区三| 欧美精品日韩综合在线| 中文字幕亚洲视频| 精品一区二区免费视频| 欧美四级电影网| 中文字幕在线不卡| 久久99深爱久久99精品| 欧美日韩色综合| 亚洲女性喷水在线观看一区| 国模无码大尺度一区二区三区| 欧美视频在线一区二区三区| 国产精品午夜在线| 久久成人精品无人区| 欧美日韩中文精品| 日韩毛片高清在线播放| 国产精品影视天天线| 欧美一区二区三区思思人| 亚洲一区二区三区美女| av男人天堂一区| 国产日韩精品一区二区三区在线|