Chinaunix

标题: [PHP+MYSQL]mysql_connect 与mysql_pconnect的性能分析 [打印本页]

作者: okchina    时间: 2006-08-02 23:40
标题: [PHP+MYSQL]mysql_connect 与mysql_pconnect的性能分析
通过php的mysql函数连接有2个选择:
1)mysql_connect()
2)mysql_pconnect()

手册上说,mysql_pconnect()是持久连接.
我的理解是,通过WEB页面使用这个函数来访问mysql时.只要有了这个连接的PID.你再次通过这个页面访问mysql时,应该继续使用这个PID.但是我实际测试发现如下的问题.

1)如果你很快的F5当前页面的话,这个PID一直有效.
2)如果你过一会儿再F5这个页面的话,系统会生成新的PID,而且会越来越多.你根本无法控制PID
3)你用mysql_close()也不能kill这个PID
4)我用mysql_thread_pid()得到这个PID ,不知道能不能重复使用?



想试试mysql_pconnect() 的原因是原来使用mysql_connect(),但是由于计算时间等待太长,Apache已经停止响应了,所以相应的mysql_connect()也失效了.尽管手册上说,mysql_connect()是在页面结束后自动消除.不用mysql_close().导致我很被动

不知道有没有更好的解决方案.

谢谢.
作者: ilcj    时间: 2006-08-03 00:56
我用mysql提供的C的API时发现 提供的mysql_connect() 默认8个小时实效 你可以用mysql_ping() 解决这个问题
作者: HonestQiao    时间: 2006-08-03 08:55
php数据库持久连接:http://www.php.net/manual/zh/features.persistent-connections.php
my.cnf设置:

  1. max_user_connections=25
  2. max_connections=500
  3. interactive_timeout=10
  4. wait_timeout=10
复制代码



If anyone ever wonders why the number of idle db process (open connections) seems to grow even though you are using persistent connections, here's why:

"You are probably using a multi-process web server such as Apache. Since
database connections cannot be shared among different processes a new
one is created if the request happen to come to a different web server
child process."

这段话是说:
有人感到很惊奇,在使用持久连接的情况下,空闲的数据库链接依然会快速增长,原因如下:
你可能使用了一个多线程的web服务器,例如Apache
因为数据库链接不能在不通的线程之间共享,那马在连接的时候就回产生新的链接了。

参考以上的my.cnf配置做吧。
作者: okchina    时间: 2006-08-03 17:30
还有一个疑问就是,我用 pconnect后,创建一个临时表,
我如何保证下面的代码使用这个临时表,没有问题.
是不是一定要沿着这个连接的PID才能访问临时表?

我发现刚刚建立,下面的语句就提示找不到这个临时表了.

郁闷.

有没有什么办法???
作者: HonestQiao    时间: 2006-08-03 17:43
原帖由 okchina 于 2006-8-3 17:30 发表
还有一个疑问就是,我用 pconnect后,创建一个临时表,
我如何保证下面的代码使用这个临时表,没有问题.
是不是一定要沿着这个连接的PID才能访问临时表?

我发现刚刚建立,下面的语句就提示找不到这个临时表了.

...


解决方法,创建内存表。
作者: okchina    时间: 2006-08-03 21:44
原帖由 HonestQiao 于 2006-8-3 17:43 发表


解决方法,创建内存表。




小乔真搞笑.....

haha




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2