关于mysql与mysqli
发布时间:2011-02-23 12:03:00
另:@会影响效率
如:@mysql_connect() 可以导出错误,但会影响效率。
mysql与mysqli的区别:
mysqli连接是永久连接,而mysql是非永久连接。
mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。
mysqli连接:一直都只使用同一个进程。
好处:这样就可以很大程度的减轻服务器端压力。
当然,如果mysql也需要永久连接的话,就可以使用mysql_pconnect()这个函数
mysqli的面向过程的使用:
$conn = mysqli_connect('localhost', 'root', '123', 'db_test') or ('error');
$sql = "select * from db_table";
$query = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($query)){
echo $row['title'];
}
mysqli的面向对象的使用:
$conn = mysqli('localhost', 'root', '123', 'db_test');
$sql = "select * from db_table";
$query = $conn->query($sql);
while($row = $query->fetch_array()){
echo $row['title'];
}
mysql_connect与mysql_pconnect与mysqli_connect:
mysql_pconnect打开的连接不会关闭(即使调用mysql_close也不会关闭,因为对其无效),
类似于连接缓冲池,如果下次有来自于同一个机器的同一个用户名
对同一个数据库的连接,php会自动使用上次已经建立的连接,而不需要再重新建立一个。
好处:是省去了每次与数据库建立连接的开销,
坏处:是需要浪费一些内存,占用一些连接,
所以如果用户访问量大的时候会出现错误,要把mysql的max_connections参数改大一点, 或者使用mysql_connect()就解决问题。
简单的来说MySQL_pconnect是用来在php与MySQL间建立一条持续连接,
一般php的执行模式是脚本开始执行时初始化所有资源, 脚本运行结束后释放所有资源.
而MySQL_pconnect的方式则不这样, MySQL_connect每次都是重新通过tcp 等
跟sql服务器建立关系, 每次连接都是要消耗不少服务器资源的.
使用pconnect时, 有请求连接MySQL时, php会检查是否之前有条相同的连接(以相同的用户名密码连接到同一个MySQL服务器)已经建立,
如果有的话就直接使用这条连接, 值得注意的是这个相同的连接的概念是对进程来说的,
不同的进程连接 MySQL_pconnect建立会建立起多条连接.
connect与pconnect不会带来功能的差异, 只有性能上的差别.
一般php有俩种运行模式, 一是作为cgi运行, 二是作为apache的模块运行.
作为cgi的时候connect跟pconnect没什么不同, 因为每次cgi进行运行结束后都会被销毁清理掉资源.
php作为apache模块方式运行时, 可以使用到数据库持续连接, 但可能会存在潜在的问题,
看php手册,如果你是cgi安装方式。pconnection永远也不会生效。
长连接最大的缺点就是万一一个用户锁死,当前进程就永久锁死了。
假如你在apache里的设置是进程永不销毁的话就………………
说了,并且记录了那么多,
也就是说尽量使用mysql_connect,因为运行结束后会自动中断,符合编程的风格吧。
也可以使用mysql_connect和mysql_pconnect一起使用,就好像一个链接缓冲池一样,
也就是说建立一个有mysql_connect 和 mysql_pconnect的类。
当然,如果不考虑向下兼容的话,最好还是使用mysqli_connect,因为mysqli本身就是永久性连接。
至于mysqli的优点,就不多做介绍了。
猜你喜欢
- 一次性验证码,英文是 One Time Password,简写为 OTP,又称动态密码或单次有效密码,是指计算机系统或其他数字设备上只能使用
- 主要介绍常用的MySQL命令,包括连接数据库,修改密码,管理用户,操作数据库,操作数据表,数据库备份等,每个命令都配有实例说明,让大家更容易
- 比如有两个模块,一个aa.py,一个bb.py 代码如下:aa.py:#encoding:utf-8import bba=1bb.py:#e
- 关于Pytorch中怎么自定义Dataset数据集类、怎样使用DataLoader迭代加载数据,这篇官方文档已经说得很清楚了,这里就不在赘述
- 听到一些人说现在做产品设计很没有成就感。没有什么创造力,除了抄袭模仿(称之为竞争分析)、千篇一律(又称规范标准)还有复杂的流程、粗制滥造的表
- shapefile转换geojsonimport shapefileimport codecsfrom json import dumps#
- Logo是品牌图形区别的点睛之处,我们每天都要接触很多logo - 在高速公路上,在购买商品时,以及浏览各种网站。我们查看很多logo设计,
- 傅里叶变换是在高数是一个很重要的知识点,今天将结合Python代码实现傅立叶变换。傅立叶变换我们平时是如何去分解一个复杂的问题呢?一个经典的
- 前言这几年对运维人员来说最大的变化可能就是公有云的出现了,我相信可能很多小伙伴公司业务就跑在公有云上, 因为公司业务关系,我个人
- 简单说明这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。简称kNN。已知:训练集,以及每个训练集的标签。接下来:
- 1.首先安装依赖包,避免在安装过程中出现问题[root@chufeng yusen]# yum -y install wget vim ba
- 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%&
- 先来看一下该方法的说明create_image(position, **options) [#]Draws an image on the
- 使用WebDriver在Chrome浏览器上进行测试时,需要从http://chromedriver.storage.googleapis.
- 最近做某项目的数据库分析,要实现对海量数据的导入问题,就是最多把200万条数据一次导入sqlserver中,如果使用普通的insert语句进
- 1. 原理对于DNA序列,一阶马尔科夫链可以理解为当前碱基的类型仅取决于上一位碱基类型。如图1所示,一条序列的开端(由B开始)可能是A、T、
- 1.找到缺失值导入数据集df=pd.read_csv("nba.csv")df.head(10)替换异常值(数据集中异常
- 问题:将文件夹a下任意命名的10个文件修改为如下图所示文件?代码:#coding:utf-8import ospath = "./
- <ScriptRUNAT=SERVERLanguage=VBScript>SubApplication_OnStar
- 前言在Windows上编写python程序时,有时候需要对输出的文字颜色进行设置,特别是日志显示,不同级别的日志设置不同的颜色进行展示可以直