摘要:環(huán)境適用場景需要處理一定數(shù)據(jù)集業(yè)務(wù)從讀取一定數(shù)據(jù)的業(yè)務(wù)導(dǎo)出一次需要處理一定的業(yè)務(wù)操作更新刪除等更多需要處理一定數(shù)據(jù)集的操作關(guān)鍵設(shè)置關(guān)鍵設(shè)置,如果不設(shè)置,依舊會從一次取出數(shù)據(jù)到里的游標(biāo)屬性不是必須的生成器生成器,迭代數(shù)據(jù)操作本生成器可
環(huán)境
mysql: 5.6.34
php: 5.6
nginx: php-fpm
需要處理一定數(shù)據(jù)集業(yè)務(wù)
從mysql讀取一定數(shù)據(jù)的業(yè)務(wù)導(dǎo)出
一次需要處理一定的mysql業(yè)務(wù)操作更新刪除等
更多需要處理一定數(shù)據(jù)集的操作
pdo 關(guān)鍵設(shè)置$dbh = new PDO($dsn, $user, $pass); # 關(guān)鍵設(shè)置,如果不設(shè)置,php依舊會從pdo一次取出數(shù)據(jù)到php $dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); //perpare里的游標(biāo)屬性不是必須的 $sth = $dbh->prepare("SELECT * FROM `order`", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $sth->execute();生成器
生成器,迭代數(shù)據(jù)操作 本生成器可省略嘗試代碼
class Test { public function test() { set_time_limit(0); $dbms="mysql"; //數(shù)據(jù)庫類型 $host=C("DB_HOST"); //數(shù)據(jù)庫主機(jī)名 $dbName=C("DB_NAME"); //使用的數(shù)據(jù)庫 $user=C("DB_USER"); //數(shù)據(jù)庫連接用戶名 $pass=C("DB_PWD"); //對應(yīng)的密碼 $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" ? " " : "輸出
"; foreach ($this->cursor($sth) as $row) { // var_dump($row); echo $row["id"] . $newLine; $i++; } echo "消耗內(nèi)存:" . (memory_get_usage() / 1024 / 1024) . "M" . $newLine; echo "處理數(shù)據(jù)行數(shù):" . $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 消耗內(nèi)存:"0.34918212890625M 處理數(shù)據(jù)行數(shù):254062 success
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28386.html
摘要:開發(fā)中經(jīng)常遇到這樣的場景產(chǎn)品汪我要在后臺做一個功能,可以導(dǎo)出自定義時間范圍的訂單信息。結(jié)果,第二天一上班產(chǎn)品汪過來就是拍桌子,我想把去年一整年的訂單都導(dǎo)出來,結(jié)果后臺直接就掛了開發(fā)小哥一查,原來是內(nèi)存溢出了,一年下來的的訂單量足足有條。 開發(fā)中經(jīng)常遇到這樣的場景 產(chǎn)品汪:我要在后臺做一個功能,可以導(dǎo)出自定義時間范圍的訂單信息。開發(fā)小哥二話不說,半天就把功能做完并上線了。結(jié)果,第二天一上...
閱讀 3123·2021-11-18 10:02
閱讀 2628·2021-10-13 09:47
閱讀 3077·2021-09-22 15:07
閱讀 810·2019-08-30 15:43
閱讀 1825·2019-08-30 10:59
閱讀 1706·2019-08-29 15:34
閱讀 1718·2019-08-29 15:06
閱讀 454·2019-08-29 13:28