原文:mysql_connect v/s mysql_pconnect

译文:mysql_connect v/s mysql_pconnect

译者:dwqs

当需要使用PHP连接MySQL数据库的时候,会发现有两种数据库连接函数:mysql_connect()和mysql_pconnect()。

1、mysql_connect()

在脚本开始的时候,mysql_connect()会创建一个新的连接,脚本结束的时候就会关闭连接。脚本每一次执行,它都会创建一个新的连接。

2、mysql_pconnect()

当使用mysql_pconnect()连接数据库时,它首先会判断是否已经存在了数据库连接,如果存在,就会利用先用的资源ID,反之,就会创建一个新的连接。

在创建连接之后,函数返回资源ID(如果有)。当脚本再次调用的时候,它并不会创建新的连接。当然,脚本结束的时候,也不会关闭连接。这称之为持久连接。

但是,使用mysql_pconnect()时,需要对服务器配置做一下微调,譬如限制连接数,超时连接,以及处理空连接等。

3、怎么使用这两个函数

如果你的应用有很大流量,应该使用mysql_pconnect()函数,反之考虑mysql_connect()函数。

如果PHP和MySQL在同一台服务器上或者在本地网络,连接次数是可以忽略的,因为无论在哪种情况之下,持久连接都没有优势可言。

4、使用mysql_pconnect()应该留意的事

一般来说,当你锁定一个表时,连接关闭之后是就自动解锁了。但由于持久连接不关闭,任何你不小心锁定的表仍然会保持锁定的状态,唯一解锁的办法就是等待连接超时或者手动杀死进程。在进行事物处理时也会造成这个问题。

同样,临时表在连接关闭之后也会被删除。但由于持久连接不关闭,临时表就不再是临时表了。如果你完成需求后不删除临时表,它将作为一个新的客户端连接,并且是对于同一个连接。在设置Session变量的时候,会造成同样的问题。

在Apache上使用持久连接的效果并不会很好。当Apache收到客户端的一个请求时,会打开一个新的数据库连接,而不是利用已经存在持久连接去打开数据库,这将导致很多空闲进程、浪费资源,当达到最大连接数时,还是造成未知错误。

mysql_connect v/s mysql_pconnect的更多相关文章

  1. mysql_connect和mysql_pconnect区别(转)

    php中mysql_pconnect()的实现方式:其实mysql_pconnect()本身并没有做太多的处理,它唯一做的只是在php运行结束后不主动close掉mysql的连接.mysql_pcon ...

  2. MySQL连接问题【mysql_connect和mysql_pconnect区别】

    --MySQL连接问题[mysql_connect和mysql_pconnect区别] -------------------------------------------------------- ...

  3. mysql_connect和mysql_pconnect区别

    php中mysql_pconnect()的实现方式:其实mysql_pconnect()本身并没有做太多的处理,它唯一做的只是在php运行结束后不主动close掉mysql的连接.mysql_pcon ...

  4. php高版本不再使用mysql_connect()来连接数据库

    想用php生成一个mysql数据字典导出来,用到下面代码会 $mysql_conn = mysql_connect ( "$dbserver", "$dbusername ...

  5. mysql_pconnect 问题

    不同于mysql_connect的短连接,mysql_pconnect持久连接的时候,将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接 ...

  6. PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect, mysql_select_db, mysql_error, mysql_num_rows,mysql_close

    一: 要求: 上面的图表 中的数据插入到 3张表中. 1)t_vide_warehourse 分类表: 此表中包含 一级分类 和二级分类.  二级分类是一级分类的子级. 2)t_video_info  ...

  7. Mysql_connect报告”No such file or directory”错误的解决方法

    写了个php脚本单独执行mysql_connect(),发现错误信息居然是“No such file or directory"! 首先确定是mysql_connect()和mysql_pc ...

  8. php中mysql_pconnect()的实现方式.

    网上有人说要想让mysql_pconnect正常稳定的工作,必须保证mysql max_connect参数设定大于或等于apache的最大线程(进程)数.这句话是有一定道理的.这要简单了解mysql_ ...

  9. J a v a 的“多重继承”

    接口只是比抽象类“更纯”的一种形式.它的用途并不止那些.由于接口根本没有具体的实施细节——也就是说,没有与存储空间与“接口”关联在一起——所以没有任何办法可以防止多个接口合并到一起.这一点是至关重要的 ...

随机推荐

  1. 日志logger

    1.使用指定类初始化日志对象 在日志输出的时候,可以打印出日志信息所在类如:Logger logger = LoggerFactory.getLogger(com.Book.class);       ...

  2. Hibernate逍遥游记-第9章 Hibernate的映射类型

    1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...

  3. Android:Logcat中找不到本应该输出的Log调试信息

    1.有没有设置Logcat的filter, 2.如果选中了自定义的filter,Tag是否和程序中想查看的那条输出信息的Tag相同: 3.Level等级是否设置的太高. filter设置 点击loca ...

  4. Quartz的任务的临时启动和暂停和恢复

    Quartz的任务的临时启动和暂停和恢复 在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类.由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可. p ...

  5. linux快速修改文件夹及文件下所有文件与文件夹权限

    分两部分改属主和权限: 更改权限,递归方式 chmod -R 755 /var/www/html/test.com 更改属主,递归 chown -R apache:apache /var/www/ht ...

  6. mysql备份恢复数据库据/表

    备份单个数据库,只备份表,如要恢复,必须先创建一个数据库[root@s]# mysqldump -u root -p dbname1 > dbname1.sql[root@s]# mysql - ...

  7. Android手机拍照

    参考的这个视频教程:http://v.youku.com/v_show/id_XNjI5MzkzMjQ4.html和官方API档file:///D:/Android/androidstudio/sdk ...

  8. POJ 3211 (分组01背包) Washing Clothes

    题意: 小明有一个贤妻良母型的女朋友,他们两个一起洗衣服. 有M种颜色的N件衣服,要求洗完一种颜色的衣服才能洗另外一种颜色. 两人可以同时洗,一件衣服只能被一个人洗. 给出洗每件衣服所用的时间,求两个 ...

  9. 深入分析 ThreadLocal 内存泄漏问题

    前言 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度.但是如果滥用ThreadLocal,就可能 ...

  10. uvalive 3523 Knights of the Round Table 圆桌骑士(强连通+二分图)

    题目真心分析不出来.看了白书才明白,不过有点绕脑. 容易想到,把题目给的不相邻的关系,利用矩阵,反过来建图.既然是全部可行的关系,那么就应该能画出含奇数个点的环.求环即是求双连通分量:找出所有的双连通 ...