1. 程式人生 > 其它 >php kafka 連線斷開多次後 連結不上_php和mysql連線方式(短 長 池)

php kafka 連線斷開多次後 連結不上_php和mysql連線方式(短 長 池)

技術標籤:php kafka 連線斷開多次後 連結不上

一個php work程序只能處理一個請求,當完成一個請求了,才能處理下一次的請求

2.短連線:

執行到php關閉mysql連線的程式碼時,就斷開,否則在處理本次請求結束的時候,釋放mysql連線

實驗:

<?php
    $dbhost = '127.0.0.1';
    $dbdatabase = 'im';
    $username = 'root';
    $userpass = '123456';

    $dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';';
    $dbh=new PDO($dsn,$username,$userpass);
    $stmt=$dbh->query('SELECT id FROM im_fri');
    $row=$stmt->fetch();
    sleep(10);
    var_dump($row);

併發請求: /usr/local/ab/usr/bin/ab -c 100 -n 100 http://192.168.149.130/login/index

結果: 檢視mysql連線數: show full processlist
這裡我截了php work程序,和兩個時刻的mysql連線情況的圖片

3c251fb83267c90ebd4d96a670621c9d.png

5191f156b920114c7abdd568d0610a69.png

944dbe7347379efa76d2a885c59f3643.png

一共五個php-fpm程序,mysql有五個連線,連線的id,會遞增,說明每次請求完成,mysql連線消失,新的請求,php會重新連線mysql。

3.長連線:

當我們建立的資料連線為PDO持久化連線時,該連線在使用完畢或者PHP指令碼結束後並不會被關閉,而是被PHP快取起來。當另一個使用相同憑證(主機、埠、資料庫名、使用者名稱、密碼等資訊完全一致)的PHP指令碼請求建立連線時,PHP將直接返回之前被快取起來的連線,從而達到連線重用。持久連線快取可以避免每次訪問資料庫都要建立一個新連線的開銷。

實驗:

<?php
    $dbhost = '127.0.0.1';
    $dbdatabase = 'im';
    $username = 'root';
    $userpass = '123456';

    $dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';';
    $dbh=new PDO($dsn,$username,$userpass,  [PDO::ATTR_PERSISTENT => true]);
    $stmt=$dbh->query('SELECT id FROM im_fri');
    $row=$stmt->fetch();
    sleep(10);
    var_dump($row);

併發請求: /usr/local/ab/usr/bin/ab -c 100 -n 100 http://192.168.149.130/login/index

結果: 檢視mysql連線數: show full processlist
這裡我截了php work程序,和兩個時刻的mysql連線情況的圖片

3c251fb83267c90ebd4d96a670621c9d.png

b399994d69c351931bd54a5c8daca6d9.png

9ef424d1850ae637b7bf20884dba7eee.png

一共五個php-fpm程序,mysql有五個連線,連線的id不會變動,說明每次請求完成,mysql連線不會消失,在每個php-fpm程序中處理新的請求,php會重用以前mysql連線, 請求都結束了,每個php-fpm程序和mysql的連線還是不會斷的,一直保持著。

3. 總結

c0788e9dbc4bf7ba27d2d6a7c013f68f.png

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務程式碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、伺服器效能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell指令碼、Docker、微服務、Nginx等多個知識點高階進階乾貨需要的可以免費分享給大家

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務程式碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、伺服器效能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell指令碼、Docker、微服務、Nginx等多個知識點高階進階乾貨需要的可以免費分享給大家,需要戳這裡PHP進階架構師>>>視訊、面試文件免費獲取

或 者關注我每天分享技術文章

進階PHP架構師​www.zhihu.com 847b7489e89212beba59f02f13819d50.png
作者:wangnan
來源:https://www.cnblogs.com/wangweiwen/p/6937318.html