欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 詳解PHP中的數據庫連接持久化

詳解PHP中的數據庫連接持久化

熱門標簽:福州人工外呼系統哪家強 百度商鋪地圖標注 注冊400電話申請 釘釘打卡地圖標注 地圖標注平臺怎么給錢注冊 常州地圖標注服務商 安裝電銷外呼系統 新河科技智能外呼系統怎么樣 衡水外呼系統平臺

PHP中的數據庫連接持久化

數據庫的優化是我們做web開發的重中之重,甚至很多情況下其實我們是在面向數據庫編程。當然,用戶的一切操作、行為都是以數據的形式保存下來的。在這其中,數據庫的連接創建過程有沒有什么可以優化的內容呢?答案當然是有的,Java等語言中有連接池的設定,而PHP在普通開發中并沒有連接池這種東西,在牽涉到多線程的情況下往往才會使用連接池的技術,所以PHP每次運行都會創建新的連接,那么這種情況下,我們如何來優化數據連接呢?

什么是數據庫連接持久化

我們先來看下數據庫連接持久化的定義。

持久的數據庫連接是指在腳本結束運行時不關閉的連接。當收到一個持久連接的請求時。PHP 將檢查是否已經存在一個(前面已經開啟的)相同的持久連接。如果存在,將直接使用這個連接;如果不存在,則建立一個新的連接。所謂“相同”的連接是指用相同的用戶名和密碼到相同主機的連接。

對 web 服務器的工作和分布負載沒有完全理解的讀者可能會錯誤地理解持久連接的作用。特別的,持久連接不會在相同的連接上提供建立“用戶會話”的能力,也不提供有效建立事務的能力。實際上,從嚴格意義上來講,持久連接不會提供任何非持久連接無法提供的特殊功能。

這就是PHP中的連接持久化,不過它也指出了,持久連接不會提供任何非持久連接無法提供的特殊功能。這就很讓人疑惑了,不是說好了這個方案可以帶來性能的提升嗎?

連接持久化有什么用?

沒錯,從上述定義中指出的特殊功能來看,持久化連接確實沒有帶來新的或者更高級的功能,但是它最大的用處正是提升了效率,也就是性能會帶來提升。

當Web Server創建到SQL服務器的連接耗費(Overhead)較高(如耗時較久,消耗臨時內存較多)時,持久連接將更加高效。

也就是說連接耗費高的時候,創建數據庫連接的成本開銷也會越大,時間當然也越長。使用持久化連接之后,使得每個子進程在其生命周期中只做一次連接操作,而非每次在處理一個頁面時都要向SQL 服務器提出連接請求。這也就是說,每個子進程將對服務器建立各自獨立的持久連接。

例如,如果有 20 個不同的子進程運行某腳本建立了持久的 SQL 服務器持久連接,那么實際上向該 SQL 服務器建立了 20 個不同的持久連接,每個進程占有一個。

效率對比

話不多說,我們直接通過代碼來對比。首先,我們定義好一個統計函數,用來返回當前的毫秒時間。另外,我們還要準備好數據的連接參數。

function getmicrotime()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float) $usec + (float) $sec);
}

$db = [
    'server' => 'localhost:3306',
    'user' => 'root',
    'password' => '',
    'database' => 'blog_test',
];

接下來,我們先使用普通的 mysqli 進行測試。

$startTime = getmicrotime();
for ($i = 0; $i  1000; $i++) {
    $mysqli = new mysqli($db["server"], $db["user"], $db["password"], $db["database"]); //持久連接
    $mysqli->close();
}
echo bcsub(getmicrotime(), $startTime, 10), PHP_EOL;
// 6.5814000000

在 1000 次的循環創建數據庫的連接過程中,我們消耗了6秒多的時間。接下來我們使用持久化連接的方式進行這 1000 次的數據庫連接創建。只需要在 mysqli 的 $host 參數前加上一個 p: 即可。

$startTime = getmicrotime();
for ($i = 0; $i  1000; $i++) {
    $mysqli = new mysqli('p:' . $db["server"], $db["user"], $db["password"], $db["database"]); //持久連接
    $mysqli->close();
}
echo bcsub(getmicrotime(), $startTime, 10), PHP_EOL;
// 0.0965000000

從 mysqli 的連接上來看,效率提升非常明顯。當然,PDO 方式的數據庫連接也提供了建立持久連接的屬性。

$startTime = getmicrotime();
for ($i = 0; $i  1000; $i++) {
    $pdo = new PDO("mysql:dbname={$db['database']};host={$db['server']}", $db['user'], $db['password']);
}
echo bcsub(getmicrotime(), $startTime, 10), PHP_EOL;
// 6.6171000000

$startTime = getmicrotime();
for ($i = 0; $i  1000; $i++) {
    $pdo = new PDO("mysql:dbname={$db['database']};host={$db['server']}", $db['user'], $db['password'], [PDO::ATTR_PERSISTENT => true]); //持久連接
}
echo bcsub(getmicrotime(), $startTime, 10), PHP_EOL;
// 0.0398000000

PDO 方式連接時,需要給一個 PDO::ATTR_PERSISTENT 參數并設置為 true 。這樣就讓 PDO 建立的連接也成為了持久化的連接。

注意

既然數據庫的持久化連接這么強大,為什么不默認就是這種持久化的連接形式,而需要我們手動增加參數來實現呢?PHP 的開發者們當然還是有顧慮的。

如果持久連接的子進程數目超過了設定的數據庫連接數限制,系統將會產生一些問題。如果數據庫的同時連接數限制為 16,而在繁忙會話的情況下,有 17 個線程試圖連接,那么有一個線程將無法連接。如果這個時候,在腳本中出現了使得連接無法關閉的錯誤(例如無限循環),則該數據庫的 16 個連接將迅速地受到影響。

同時,表鎖和事務也有需要注意的地方。

在持久連接中使用數據表鎖時,如果腳本不管什么原因無法釋放該數據表鎖,其隨后使用相同連接的腳本將會被持久的阻塞,使得需要重新啟動 httpd 服務或者數據庫服務

在使用事務處理時,如果腳本在事務阻塞產生前結束,則該阻塞也會影響到使用相同連接的下一個腳本

所以,在使用表鎖及事務的情況下,最好還是不要使用持久化的數據庫連接。不過好在持久連接和普通連接是可以在任何時候互換的,我們定義兩種連接形式,在不同的情況下使用不同的連接即可解決類似的問題。

總結

事物總有兩面性,持久連接一方面帶來了效率的提升,但另一方面也可能帶來一些業務邏輯上的問題,而且這種問題如果在不了解持久連接的機制的情況下會非常難排查。因此,在日常開發中我們一定要在了解相關功能特性的情況下再選擇適合的方式來完成所需要的功能開發。

測試代碼:

github.com/zhangyue050…

以上就是詳解PHP中的數據庫連接持久化的詳細內容,更多關于PHP 數據庫連接持久化的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP連接MySQL數據庫三種實現方法
  • PHP連接SQL server數據庫測試腳本運行實例
  • PHP連接MySQL數據庫操作代碼實例解析
  • PHP實現單例模式建立數據庫連接的方法分析
  • 解決php用mysql方式連接數據庫出現Deprecated報錯問題
  • php pdo連接數據庫操作示例
  • PHP連接MySQL數據庫的三種方式實例分析【mysql、mysqli、pdo】
  • php連接mysql數據庫最簡單的實現方法
  • thinkphp3.2同時連接兩個數據庫的簡單方法
  • thinkPHP5框架實現多數據庫連接,跨數據連接查詢操作示例

標簽:白城 唐山 柳州 鷹潭 遼陽 六安 鶴崗 克拉瑪依

巨人網絡通訊聲明:本文標題《詳解PHP中的數據庫連接持久化》,本文關鍵詞  詳解,PHP,中的,數據庫,連接,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解PHP中的數據庫連接持久化》相關的同類信息!
  • 本頁收集關于詳解PHP中的數據庫連接持久化的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    2019男人天堂| 欧美不卡视频一区| 中文字幕一区二区不卡 | 91一区二区在线| 萌白酱视频在线| 精品对白一区国产伦| 日本亚洲一区二区| 熟妇高潮精品一区二区三区| 7777精品伊人久久久大香线蕉经典版下载| 亚洲蜜臀av乱码久久精品| 成人综合婷婷国产精品久久| 日本黄色免费片| 中文字幕一区二区三区不卡| jlzzjlzz欧美大全| 色狠狠色狠狠综合| 亚洲欧美成aⅴ人在线观看| 99久久久国产精品| 欧美性猛交xxxx黑人交 | 成年人看的免费视频| 精品国免费一区二区三区| 看片网站欧美日韩| 卡一卡二卡三在线观看| 欧美韩日一区二区三区四区| 国产**成人网毛片九色| 美女福利视频在线观看| 一级精品视频在线观看宜春院| 波多野结衣三级视频| 欧美另类z0zxhd电影| 视频在线观看91| 亚洲成人网在线播放| 国产欧美日韩精品a在线观看| 国产成人综合在线| 一本色道综合亚洲| 亚洲一区中文日韩| 91视频啊啊啊| 亚洲精品一区二区三区影院| 国产一区二区影院| 国产精品视频一区二区三| 亚洲欧洲综合另类在线| 国产大尺度视频| 欧美电影免费提供在线观看| 精品一区二区三区免费| 国产97免费视频| 一区二区三区丝袜| 精品无码在线视频| 国产色产综合产在线视频| 99久久777色| 3751色影院一区二区三区| 另类成人小视频在线| 永久av免费网站| 一区二区三区电影在线播| 亚洲中文字幕一区| 欧美激情在线一区二区三区| 91在线视频播放地址| 欧美一级欧美一级在线播放| 国产一区二区三区电影在线观看| 一本到不卡免费一区二区| 五月婷婷久久丁香| 日韩在线观看免| 亚洲国产综合人成综合网站| wwwwww日本| 亚洲视频小说图片| 野花社区视频在线观看| 国产精品久久久久久久久免费丝袜| 久草福利在线观看| 亚洲精品一区二区三区四区高清| 成人激情免费视频| 日韩欧美中文字幕公布| 夫妻av一区二区| 337p亚洲精品色噜噜噜| 高清在线观看日韩| 欧美一区二区网站| 丁香婷婷深情五月亚洲| 91精品国产欧美一区二区成人| 国产精品一区二区在线播放| 欧美日韩国产免费一区二区| 国产一二精品视频| 欧美美女直播网站| 顶级嫩模精品视频在线看| 日韩欧美的一区| 91免费视频大全| 久久九九久久九九| 国产成人av无码精品| 中文字幕一区二区在线观看 | 国产视频精品视频| 国产精品久久久久婷婷二区次| 2一3sex性hd| 亚洲精品午夜久久久| 国产精品18在线| 日本伊人午夜精品| 欧美三级中文字幕| 成人综合婷婷国产精品久久免费| 精品国产伦一区二区三区观看体验 | 亚洲免费观看高清完整版在线| 成人在线一级片| 亚洲成a人在线观看| 色老头久久综合| 国产剧情一区二区| 日韩欧美一级精品久久| 18深夜在线观看免费视频| 国产精品网站导航| 成年人免费观看视频网站| 亚洲777理论| 欧洲国产伦久久久久久久| 国产不卡视频在线观看| 精品国产伦一区二区三区观看方式 | 又黄又爽的网站| 亚洲精品亚洲人成人网| 日日骚一区二区三区| 国产精品自拍三区| 精品国产污污免费网站入口 | 欧美激情一区在线| 成人片黄网站色大片免费毛片| 亚洲国产婷婷综合在线精品| 色域天天综合网| 风间由美一区二区三区在线观看| 欧美精品一区二区久久久| 182在线视频| 性感美女久久精品| 欧美日韩一区二区三区在线| 91亚洲精品久久久蜜桃网站| 中文字幕在线观看一区| 91插插插插插插| 高清成人在线观看| 中文字幕免费一区| 国产人与禽zoz0性伦| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品一区二区三区蜜臀| 90岁老太婆乱淫| 免费成人在线视频观看| 欧美一级免费观看| 亚洲av网址在线| 日本午夜精品视频在线观看 | 91亚洲精品一区二区乱码| 亚洲美女精品一区| 欧美最猛性xxxxx直播| 99久久99久久久精品齐齐| 亚洲另类中文字| 欧洲日韩一区二区三区| 丰满人妻一区二区三区免费视频棣| 亚洲一区二区中文在线| 777亚洲妇女| 无遮挡aaaaa大片免费看| 老司机午夜精品| 国产午夜精品福利| 顶臀精品视频www| 91欧美一区二区| 亚洲一区二区三区四区五区黄| 欧美日韩一区三区四区| xxxwww国产| 日本成人在线不卡视频| 26uuu精品一区二区| 日本视频在线免费| 成人免费视频一区| 亚洲精品一卡二卡| 欧美一区二区三区在线看| 手机av免费看| 国产乱淫av一区二区三区| 国产精品久久久久久亚洲伦| 日本福利一区二区| 久草免费资源站| 美女网站一区二区| 国产欧美日本一区二区三区| 国产高清在线免费观看| 无码国产精品一区二区免费式直播| 日韩精品一区第一页| 久久久噜噜噜久噜久久综合| 一级黄色片日本| 久久久久无码精品| 男人的天堂亚洲一区| 久久九九99视频| 欧美中文字幕一区二区三区 | 老司机成人免费视频| 无码人妻丰满熟妇区毛片蜜桃精品| 日韩高清不卡一区二区三区| 国产无一区二区| 欧美三级资源在线| 影音先锋男人在线| 91丨九色丨尤物| 免费高清视频精品| 亚洲素人一区二区| 日韩写真欧美这视频| 国产尤物在线播放| 波多野结衣先锋影音| 国产成人精品www牛牛影视| 亚洲午夜激情网站| 久久精品一区二区三区不卡牛牛 | 日韩在线中文字幕视频| 国产原创剧情av| 国产精品一区二区三区四区| 亚洲一区免费在线观看| 久久久久9999亚洲精品| 欧美视频在线一区| 亚洲天堂岛国片| 美女日批在线观看| 国产精品18久久久久久久久| 亚洲成年人网站在线观看| 国产精品免费视频网站| 日韩欧美另类在线| 91极品美女在线|