V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhidd
V2EX  ›  PHP

php 什么情况使用长连接,持久化链接

  •  
  •   zhidd · 2016-01-31 18:18:47 +08:00 · 5592 次点击
    这是一个创建于 3253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同一个 php 脚本, A 客户端和 B 客户端同时访问, php 脚本中的链接 mysql ,能不能共用一个 php 到 mysql 链接?

    12 条回复    2016-02-01 23:08:31 +08:00
    wd0g
        1
    wd0g  
       2016-01-31 20:15:20 +08:00
    这个还真没搞过
    题主的意思是
    每次 mysql 连接费时间吗?
    hildert
        2
    hildert  
       2016-01-31 20:21:49 +08:00
    mysql_pconnect 应该是你要找的方式?
    [mysql_pconnect]( http://php.net/manual/zh/function.mysql-pconnect.php)
    zhidd
        3
    zhidd  
    OP
       2016-01-31 20:36:07 +08:00
    @wd0g 是呀,能不能有一个最优化方案,因为我的网站只对网友查看,也就是只有 select
    jugelizi
        4
    jugelizi  
       2016-01-31 21:35:05 +08:00
    @zhidd 那就缓存呀 来个静态化页面呗
    em70
        5
    em70  
       2016-01-31 22:11:03 +08:00 via iPhone
    感觉没有必要,加缓存更省
    lecher
        6
    lecher  
       2016-02-01 00:24:05 +08:00 via Android   ❤️ 1
    不能,每个请求占用一个 PHP 进程,但是实际情况中开 php-fpm 的情况下, PHP 进程可以在很短的时间内完成 a 的请求处理,但是不退出,清理数据之后,继续处理 b 的请求。但是只能保证一次请求内 MySQL 连接持久化,连接结束会自动销毁 MySQL 的连接在内的所有数据。

    这种业务是缓存改干的活,没必要死抓 MySQL 去优化,如果网页内容与用户状态无关,生成静态页也无妨。或者用个内存缓存数据库, memcached 、 Redis 之类的,把一次请求要返回的数据打包好存进去,下个同样的请求直接取出来渲染就好。
    itlr
        7
    itlr  
       2016-02-01 01:09:55 +08:00
    never
    pynix
        8
    pynix  
       2016-02-01 03:15:48 +08:00
    每个请求会连接一次数据库,感觉很浪费的样子。
    ryd994
        9
    ryd994  
       2016-02-01 08:44:56 +08:00 via Android
    @pynix 本地或者内网连接,开销不大的
    否则,就说明用法有问题
    skyworker
        10
    skyworker  
       2016-02-01 13:22:08 +08:00
    mysqli 好像有个 mysql_ping 函数,可以验证当前连接是否已经被放弃.如果放弃了就再创建一次连接,没有的话就仍然使用当前连接
    php230
        11
    php230  
       2016-02-01 17:33:03 +08:00
    各有利弊吧
    mysql 每次请求,链接一次,肯定会增加开销;但是如果用 mysql_pconnect 长连接,如果前面一个阻塞了,后面的连接就......
    realpg
        12
    realpg  
       2016-02-01 23:08:31 +08:00
    @php230
    pconnect 是 mysql 最大的一个骗局……
    为啥 mysqli 都没有 pconnect 了……

    建议实测 mysql_pconnect
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:16 · PVG 06:16 · LAX 14:16 · JFK 17:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.