Maison  >  Article  >  développement back-end  >  Explication détaillée des étapes permettant à PHP d'utiliser PDO pour faire fonctionner MySQL pour lire les données

Explication détaillée des étapes permettant à PHP d'utiliser PDO pour faire fonctionner MySQL pour lire les données

php中世界最好的语言
php中世界最好的语言original
2018-05-17 14:58:562354parcourir

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 == &#39;cli&#39; ? "\n" : &#39;<br />&#39;;
  foreach ($this->cursor($sth) as $row) {
//   var_dump($row);
   echo $row[&#39;id&#39;] . $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();
Essayez le code

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

Explication détaillée des étapes pour installer l'extension yaf dans PHP7.1

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn