环境mysql:5.6.34php:5.6nginx:php-fpm适用场景需要处理某数据集业务从mysql读取某数据业务导出需要处理某mysql业务操作更新删除多操作需要处理某数据设置pdo密钥设置$dbh=new\PDO($dsn,$user,$pass);#key设置,如果不设置,php还是会从pdo取数据到php$dbh->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,false);//perpare中的cursor属性不需要$sth=$dbh->prepare("SELECT*FROM`order`",array(\PDO::ATTR_CURSOR=>\PDO::CURSOR_SCROLL));$sth->execute();Generator生成器,迭代数据操作本生成器可省略试用代码classTest{publicfunctiontest(){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->执行();$i=0;$换行=PHP_SAPI=='cli'?"\n":'
';foreach($this->cursor($sth)as$row){//var_dump($row);回显$row['id']。$换行;$i++;}回声“内存消耗:”。(memory_get_usage()/1024/1024)。“米”。$换行;echo"已处理的数据行数:".$我。$换行;回显“成功”;}publicfunctioncursor($sth){while($row=$sth->fetch(\PDO::FETCH_ASSOC)){yield$row;}}}$test=newTest();$test->test();Output1...//省略一些id804288消耗内存:"0.34918212890625M处理数据行数:254062success
