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

2016-01-31 18:18:47 +08:00
 zhidd

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

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

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

建议实测 mysql_pconnect

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/254637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX