• php和mysql连接方式(短 长 池)


    一个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连接情况的图片

     

    一共五个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连接情况的图片

     

     

    一共五个php-fpm进程,mysql有五个连接,连接的id不会变动,说明每次请求完成,mysql连接不会消失,在每个php-fpm进程中处理新的请求,php会重用以前mysql连接, 请求都结束了,每个php-fpm进程和mysql的连接还是不会断的,一直保持着。

    3. 总结

    10台php机器,每台机器上面有50个php-fpm进程,长连接的话, mysql要有五百个线程和500个php-fpm进程保持连接,可想mysql的上下文切换

    转自:https://www.cnblogs.com/wangweiwen/p/6937318.html

  • 相关阅读:
    Junit单元测试
    团队作业1——团队展示&教辅宝
    结对编程加强版四则运算器
    APP分析之海豚睡眠
    作业1--四则运算
    软件工程-pair work[附加题]
    现代程序设计 homework-02
    《软件工程》individual project开发小记(一)
    现代程序设计 homework-01
    《现代程序设计》9.9日课后总结
  • 原文地址:https://www.cnblogs.com/qiguaideta/p/11558113.html
Copyright © 2020-2023  润新知