环境

mysql: 5.6.34
php: 5.6
nginx: php-fpm

适用场景

需要处理一定数据集业务

  1. 从mysql读取一定数据的业务导出
  2. 一次需要处理一定的mysql业务操作更新删除等
  3. 更多需要处理一定数据集的操作

pdo 关键设置

$dbh = new \PDO($dsn, $user, $pass);
# 关键设置,如果不设置,php依旧会从pdo一次取出数据到php
$dbh->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
//perpare里的游标属性不是必须的
$sth = $dbh->prepare("SELECT * FROM `order`", array(\PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL));
$sth->execute();

生成器

生成器,迭代数据操作
本生成器可省略

尝试代码

class Test {public function test(){set_time_limit(0);$dbms='mysql';     //数据库类型$host=C('DB_HOST'); //数据库主机名$dbName=C('DB_NAME');    //使用的数据库$user=C('DB_USER');      //数据库连接用户名$pass=C('DB_PWD');          //对应的密码$dsn="$dbms:host=$host;dbname=$dbName";$dbh = new \PDO($dsn, $user, $pass);$dbh->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);$sth = $dbh->prepare("SELECT * FROM `order`");$sth->execute();$i = 0;$newLine = PHP_SAPI == 'cli' ? "\n" : '<br />';foreach ($this->cursor($sth) as $row) {
//            var_dump($row);echo $row['id'] . $newLine;$i++;}echo "消耗内存:" . (memory_get_usage() / 1024 / 1024) . "M" . $newLine;echo "处理数据行数:" . $i . $newLine;echo "success";}public function cursor($sth){while($row = $sth->fetch(\PDO::FETCH_ASSOC)) {yield $row;}}
}$test = new Test();
$test->test();

输出

1
... //省略部分id
804288
消耗内存:"0.34918212890625M
处理数据行数:254062
success

PHP利用PDO从mysql读取大量数据处理(可做大量数据集的导出,业务调整等)相关推荐

  1. php mysql 大量读取_PHP使用PDO从mysql读取大量数据处理详解

    前言 本文主要介绍了关于PHP利用PDO从mysql读取大量数据处理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 环境 mysql: 5.6.34 php: 5.6 n ...

  2. mysql pdo 读取字段名_PHP使用PDO从mysql读取大量数据处理详解

    前言 本文主要介绍了关于PHP利用PDO从mysql读取大量数据处理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 环境 mysql: 5.6.34 php: 5.6 n ...

  3. c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  4. Centos6.3下利用rsyslog+loganalyzer+mysql部署日志服务器

    作为一名系统运维工程师,平时查看分析LINUX系统日志我觉得是我们每天必做的功课,但时间长了会发现每次查看站点日志都得挨个进后台,几台服务器还可以这么对付,但如果管理成百上千台线上服务器,这种方法就捉 ...

  5. php通过Mysqli和PDO连接mysql数据详解

    前言 在实际开发中,关于数据库操作类,很少是自己去写,大多是通过一些框架去实现,突然自己去写,还是需要借阅手册之类,于是我觉得有必要去总结一下,php连接mysql的方法,php连接mysql,可以通 ...

  6. php mysql读取数据_PHP MySQL 读取数据

    PHP MySQL 读取数据 当 PHP 连接到 MySQL 数据库后,需要向数据库读取数据?那么怎么读取呢?一起来看看. 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据:S ...

  7. MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

    [0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据" ...

  8. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)...

    最近看老罗的视频,跟着完成了利用Java操作MySQL数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  9. mysql封装 javabean,利用Java针对MySql封装的jdbc框架类JdbcUtils完整实现(包含增删改查、JavaBean反射原理,附源码)...

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

最新文章

  1. freemind的一个大bug,一周的数据啊
  2. VTK:vtkAreaPicker用法实战
  3. linux安装mysql5.7.18_Linux下安装mysql5.7.18版本步骤
  4. 用c语言构建二叉树(重点)
  5. win7下的nginx小demo
  6. 越知道自己要什么,越知道自己是什么
  7. Android/Linux性能分析工具推荐
  8. [VC] 通过IHTMLDocument2-DC把网页保存为图片
  9. python读取.nii.gz文件并使用nibabel展示医学图片
  10. 内网穿透神器frp之进阶配置——stcp及p2p模式
  11. python因子分析案例_因子分析及python实现(一)
  12. 苹果手机相机九宫格怎么设置_用苹果手机拍照,这3个媲美单反的设置不会用,就别说自己用苹果...
  13. 计算机用户administer改名后,win10系统用户文件夹改名的详细步骤
  14. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)
  15. c语言求50以内阶乘,C语言之数组50以内的阶乘.doc
  16. if 判断条件为纯数字
  17. 什么是反向代理服务器
  18. 求多边形凸包(线性算法)--陈氏凸包算法--
  19. 协助 MongoDB 计算之本地化排序
  20. hough变换检测直线 matlab,Matlab实现Hough变换检测图像中的直线

热门文章

  1. 移动站原生的select实现省市区联动选择
  2. ES6 知识点及常考面试题
  3. c语言怎么读取mhx文件内容,C语言重新学习――基础杂类
  4. c语言让系统蓝屏,0x000000116,教您解决电脑蓝屏代码0x000000116
  5. java一年制培训_学Java学了一年,怎么找实习?
  6. 第2关:子节点创建、列出、删除
  7. 元学习Meta Learning/Learning to learn
  8. final string 堆区 栈区 java_JVM内存初学 堆、栈、方法区
  9. vue index.php,如何解决vue $index报错问题
  10. c语言中typeof关键字