實現乙個協程版mysql連線池

2022-02-01 02:03:24 字數 1618 閱讀 8475

實現乙個協程版的mysql連線池,該連線池支援自動建立最小連線數,自動檢測mysql健康;基於swoole的chanel。

最近事情忙,心態也有點不積極。技術倒是沒有落下,只是越來越不想寫部落格了。想到平時自己上網上找資料的痛苦,於是將自己這篇連線池的文章放出來,給需要的程式設計師一點幫助。

<?php

/** * 實現乙個協程版的mysql 連線池

* created by phpstorm.

* user: roverliang

* date: 2018/12/10

* time: 23:27

*/namespace console\libs;

use swoole\coroutine\mysql as comysql;

use swoole\coroutine\channel;

class comysqlpool extends comysql

$this->chan = new channel($maxnums);

$this->tag = true;

}/**

* 從連線池中獲取乙個mysql連線物件

* created by 樑子(roverliang) * 2018/12/10

*/public function pop()

$mysql = $this->chan->pop();

if (!$this->checkmysqlhealth($mysql)) else

return $mysql;

}/**

* 將mysql物件放回連線池

* created by 樑子(roverliang) * 2018/12/10

* @param $obj

*/public function push($mysql)

return true;

}/**

* 獲取mysql例項

* created by 樑子(roverliang) * 2018/12/10

* @return bool

*/protected function getmysqlinstance()

return false;

}/**

* 檢測mysql連線是否健康

* created by 樑子(roverliang) * 2018/12/10

*/protected function checkmysqlhealth($mysql)

/*** 銷毀連線池

* created by 樑子(roverliang) * 2018/12/11

*/public function destroypool()

return true;

}/**

* 監控程序池

* created by roverliang.

* date: 2018/12/12 time: 17:12

*/public function monitorpool()

}});

}}go(function()

$mysqlpool->destroypool();

});

Swoole協程模式實現Mysql連線池

永不斷開,要求我們的這個程式是乙個常駐記憶體的程式。資料庫連線池 connection pooling 是程式啟 動時建立足夠的資料庫連線,並將這些連線組成乙個連線池,由程式動態地對池中的連線進行申請,使用,釋放。當併發量很低的時候,連線可以臨時建立,但當服務吞吐達到幾百 幾千的時候,頻繁建立連線 ...

如何實現乙個連線池?

目錄前言 什麼是連線池?為什麼需要連線池?怎樣做乙個連線池?高階連線池 推薦原始碼 2w1h 是技術領域中一種非常有效的思考和學習方式,即what why和how 堅持 2w1h 可以快速提公升我們的深度思考能力。今天我們通過 2w1h 方式來討論 連線池 什麼是連線池 what 為什麼需要連線池 ...

實現乙個redis連線池

jedis連線引數設定 redis伺服器ip redis.ip 169.254.130.122 redis伺服器端口號 redis.port 6379 redis訪問密碼 redis.password test123 與伺服器建立連線的超時時間 redis.timeout 3000 jedis池引數...