提前致谢。
提前致谢。
对于MySQL来说,持久连接应该是不必要的。在其他一些数据库(如Oracle)中,建立连接是昂贵且耗时的,因此如果可以重复使用连接,则会获得很大的优势。但这些品牌的数据库提供了连接池,以更好的方式解决了这个问题。
与那些品牌的数据库相比,连接到MySQL数据库很快,因此对于MySQL使用持久连接所带来的好处相对较少。
持久连接也有缺点。无论是否需要连接,数据库服务器都会为每个连接分配资源。因此,如果连接处于空闲状态,则会看到许多浪费的资源而没有实际用途。我不知道你是否会遇到10,000个空闲连接,但即使只有几百个也很昂贵。
连接具有状态,从先前的PHP请求中“继承”信息会是不合适的。例如,临时表和用户变量通常在连接关闭时被清除,但如果使用持久连接,则不会清除。同样,基于会话的设置,例如字符集和排序规则也是如此。此外,LAST_INSERT_ID()
将报告会话期间最后生成的id -- 即使这是在之前的PHP请求期间产生的。
至少就MySQL而言,持久连接的缺点可能超过了它们的优点。而且,还有其他更好的技术可以实现高可伸缩性。
更新于2014年3月:
与其他关系型数据库品牌相比,MySQL的连接速度一直很慢,但现在已经变得越来越快。
请参阅http://mysqlserverteam.com/improving-connectdisconnect-performance/了解更多详情。
在MySQL 5.6中,我们开始着手优化处理连接和断开连接的代码。这项工作在MySQL 5.7中加速进行。在本博客文章中,我将首先展示我们取得的结果,然后描述我们所做的事情以获得这些结果。
阅读该博客以获取更多详细信息和速度比较。
mysql_connect()
和 mysql_pconnect()
都用于数据库连接,但有些区别。在 mysql_pconnect()
中,“p” 代表持久连接。
当我们使用 mysql_connect()
函数时,每次它都会根据请求打开和关闭数据库连接。
但是,在 mysql_pconnect()
函数中:
首先,当进行连接时,函数会尝试查找已经使用相同主机、用户名和密码打开的(持久)连接。如果找到一个,将返回其标识符而不是打开新连接。
其次,与 SQL 服务器的连接不会在脚本执行结束时关闭。相反,连接将保持打开状态以供将来使用(mysql_close()
不会关闭由 mysql_pconnect()
建立的连接)。
mysql_pconncet()
在您的网站上有很多流量时非常有用。此时,对于每个请求,它不会打开连接,而是从池中获取连接。这将提高您的网站效率。但对于一般用途,mysql_connect() 是最好的选择。
mysqli.max_persistent
,它是该PHP实例中连接池的最大大小。但是,在PHP中仍然没有超时连接的值。 - staticsanMYSQL_CONNECT()
1.mysql_connect可以用来关闭连接。每次根据请求打开和关闭数据库连接。
2.在MYSQL connect中,每次加载页面时都会打开数据库。
3.当页面加载时,每次都会加载数据库。
4.它用于关闭连接。
示例:
<?php $conn = mysql_connect(‘host’, ‘mysql_user’, ‘mysql_password’); if(!$conn){ die(‘Could not connect: ‘ . mysql_error()); } echo ‘Connected successfully’; mysql_close($conn); ?>
描述:
主机:指定主机名或IP地址,如localhost。
mysql_user:指定MySQL用户名。
mysql_password:指定MySQL密码。
MYSQL_PCONNECT()
1.我们使用mysql_pconncet()函数时,它会尝试查找一个开放的持久连接。
2.mysql_pconncet()函数打开持久连接。
3.mysql_pconnect()函数不支持关闭连接。
4.mysql_pconnect()函数无法关闭连接。在此处打开一个持久连接到数据库。
5.在mysql_pconncet()函数中,数据库不需要每次都连接。
6.在mysql_pconncet()函数中,数据库不需要每次都连接。
更多详情:http://prittytimes.com/difference-between-mysql_connect-and-mysql_pconnect/