批量上传网站产品,云南建设工程信息服务平台,常用的网站建设程序有那些,企业管理8大系统php与mysql的连接有三种方式#xff0c;mysql#xff0c;mysqli#xff0c;pdo。不管使用哪种方式进行连接#xff0c;都有使用buffer和不使用buffer的区别。什么叫使用buffer和不使用buffer呢#xff1f;客户端与mysql服务端进行查询操作#xff0c;查询操作的时候如果获…php与mysql的连接有三种方式mysqlmysqlipdo。不管使用哪种方式进行连接都有使用buffer和不使用buffer的区别。什么叫使用buffer和不使用buffer呢客户端与mysql服务端进行查询操作查询操作的时候如果获取的数据量比较大那个这个查询结果放在哪里呢有两个地方可以放客户端的缓冲区和服务端的缓冲区。我们这里说的buffer指的是客户端的缓冲区如果查询结果已经从服务端获取回来了放置在了客户端的缓冲区我们就称之为使用buffer。如果还是存放在服务端的缓冲区的话我们就说没有使用buffer(unbuffer)。使用buffer和不使用buffer有什么区别主要在内存方面使用buffer会增加客户端的内存压力当返回的数据结果特别大的时候可能会占用调用客户端(实际就是一个php进程)比较大的进程。不使用buffer自然对服务端(这里说的是提供mysql服务的服务器)压力更大。php中三种模式是如何设置是否使用buffer的mysql默认的query是使用buffer的而不使用buffer就需要使用mysql_unbuffer_querymysqli默认的query是不使用buffer的要使用buffer就需要设置MYSQLI_STORE_RESULTpdo默认的quey是不使用buffer的要使用buffer就需要设置MYSQL_ATTR_USE_BUFFERED_QUERY大致相关代码如下 ?php $dbConfig array(host 10.128.11.101,port 3306,user test,pass test,db test,);$sql select * from so_topic_app;//---------mysql----------//$db mysql_connect($dbConfig[host], $dbConfig[user], $dbConfig[pass]);mysql_select_db($dbConfig[db], $db);mysql_set_charset(utf8, $db);// mysql使用buffer$res mysql_query($sql, $db);$data array();while($row mysql_fetch_row($res)) {$data[] $row;}// mysql不使用buffer$res mysql_unbuffered_query($sql, $db);$data array();while($row mysql_fetch_row($res)) {$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 array();while($row $result-fetch_array()) {$data[] $row;}// mysqli使用buffer$result mysqli_query($db, $sql, MYSQLI_STORE_RESULT);$data array();while($row $result-fetch_array()) {$data[] $row;}mysqli_free_result($result);mysqli_close($db);//---------pdo----------//$dsn mysql:dbname{$dbConfig[db]};host{$dbConfig[host]};$pdo new PDO($dsn, $dbConfig[user], $dbConfig[pass]);// pdo不使用buffer$stmt $pdo-prepare($sql);$stmt-execute();$data array();$data $stmt-fetchAll();// pdo使用buffer$pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);$stmt $pdo-prepare($sql);$stmt-execute();$data array();$data $stmt-fetchAll();后续当然如果数据量非常大的话大部分人还是会考虑使用分批次来提取和处理数据。所以实际上需要我们关注和使用mysql是使用buffer还是不使用buffer的场景非常少。