本文通过实例介绍MySQLOperationBuffer在PHP中的使用方法。分享给大家,供大家参考。具体分析如下:php与mysql的连接方式有mysql、mysqli、pdo三种。无论使用哪种方式连接,使用buffer和不使用buffer是有区别的。什么是使用缓冲区和不使用缓冲区?客户端与mysql服务器进行查询操作。如果查询操作时获取的数据量比较大,那么查询结果应该放在哪里呢?有两个地方可以放:客户端的缓冲区和服务器的缓冲区。我们这里说的buffer是指client的buffer。如果查询结果已经从服务端获取到并放在客户端的缓冲区中,我们就称它为使用缓冲区。如果还保存在服务器的buffer中,我们说buffer(unbuffer)没有被使用。使用缓冲区和不使用缓冲区有什么区别?主要是内存方面,使用buffer会增加客户端的内存压力。当返回的数据结果特别大时,可能会占用调用客户端比较大的进程(实际上是一个php进程)。不使用buffer自然会给服务器带来更大的压力(这里指的是提供mysql服务的服务器)。具体可以参考:PHP如何查询MySQL中大量数据的内存使用情况?PHP中三种模式如何设置是否使用buffer?mysql默认查询使用buffer,如果不使用buffer,需要使用mysql_unbuffer_query。mysqli的默认查询不使用缓冲区。要使用缓冲区,需要设置mysqli_store_result。pdo的默认查询不使用缓冲区。使用buffer需要设置mysql_attr_use_buffered_query的大致相关代码如下:'10.128.11.101','port'=>'3306','user'=>'test','pass'=>'test','db'=>'test',);$sql='select*fromso_topic_app';//--------mysql//$db=mysql_connect($dbconfig['host'],$dbconfig['user'],$dbconfig['pass']);mysql_select_db($dbconfig['db'],$db);mysql_set_charset('utf8',$db);//mysql使用缓冲区$res=mysql_query($sql,$db);$data=array;while($row=mysql_fetch_row($res)){$data=$row;}//mysql不使用缓冲区$res=mysql_unbuffered_query($sql,$db);$data=array;$data=$row;}mysql_close($db);//--------mysqli//$db=mysqli_connect($dbconfig['host'],$dbconfig['user'],$dbconfig['pass'],$dbconfig['db']);//mysqli没有使用buffer$result=mysqli_query($db,$sql);$data=数组;while($row=$result->fetchh_array){$data=$row;}//mysqli使用缓冲区$result=mysqli_query($db,$sql,mysqli_store_result);$data=array;$data=$row;}mysqli_free_result($result);mysqli_close($db);//--------pdo//$dsn=mysql:dbname={$dbconfig['db']};host={$dbconfig['host']};$pdo=newpdo($dsn,$dbconfig['user'],$dbconfig['pass']);//pdo不使用缓冲区$stmt=$pdo->prepare($sql);$stmt->execute;$data=array;$data=$stmt->fetchall;//pdo使用缓冲区$pdo->setattribute(pdo::mysql_attr_use_buffered_query,true);$stmt->execute;$data=array;当然,如果数据量非常大,后续还有人会考虑使用batch来提取和处理数据,所以其实很少有场景需要我们去关注和使用mysql是否使用buffer.希望本文的描述对大家的php编程设计有所帮助。
