Cette fois, je vais vous donner une explication détaillée des étapes à suivre pour utiliser PHP pour faire fonctionner MySQL pour lire des données. Quelles sont les précautions pour utiliser PHP pour faire fonctionner MySQL pour lire des données. cas, jetons un coup d'oeil.
Avant-propos
Cet article présente principalement le contenu pertinent sur PHP utilisant PDO pour lire de grandes quantités de données à partir de MySQL et les partager pour votre référence et étude, pas grand chose à dire ci-dessous, jetons un œil à l'introduction détaillée.
Environnement
mysql : 5.6.34
php : 5.6
nginx : php-fpm
Scénarios applicables
Besoin de traiter certains ensembles de données métiers
Exportation commerciale de lecture de certaines données depuis mysql
Besoin de traiter certaines opérations commerciales mysql mise à jour, suppression, etc. en même temps
Plus d'opérations nécessitant le traitement de certains ensembles de données
Paramètres des touches 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();
Générateur
Générateur, opération itérative de données
Ce générateur peut être omis
Essayez le code
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
Sortie
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez faire attention aux autres articles connexes sur le site Web PHP chinois ! Lecture recommandée :
Analyse du cas d'opération de la base de données de connexion ThinkPHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!