Cette fois je vais vous montrer comment utiliser le générateur PHP et quelles sont les précautions lors de l'utilisation du générateur PHP Voici un cas pratique, jetons un oeil.
1. Description officielle : les générateurs offrent un moyen plus simple d'implémenter une itération d'objet simple. Par rapport à la définition d'une classe pour implémenter l'interface Iterator, la surcharge de performances et la complexité sont bien plus réduites. Les générateurs vous permettent d'écrire du code dans un bloc foreach pour parcourir un ensemble de données sans créer de tableau en mémoire.
2. Le générateur est comme une fonction personnalisée ordinaire. Différent de la fonction ordinaire qui ne renvoie qu'une seule fois, le générateur peut produire autant de fois que nécessaire pour générer l'itération nécessaire. avoir de la valeur.
3. Exemples de code :
//未使用生成器 echo '开始内存:'.getMemory().'<br>'; $nums = range(0,1000000); echo '结束内存:'.getMemory().'<br>'; //输出结果 //开始内存:0.23M //结束内存:130.31 //使用生成器 echo '开始内存:'.getMemory().'<br>'; $nums = xrange(1000000); function xrange($total) { for ($i = 0; $i < $total; $i++) { yield $i; } } echo '结束内存:'.getMemory().'<br>'; //输出结果 //开始内存:0.23M //结束内存:0.23M
4. Exemples d'applications pratiques
/** * 大量数据生成示例 * @param int $page * @param int $limit * @return Generator */ public function generator($page = 1,$limit = 50000) { while (true) { echo "第{$page}次".'generator开始内存:'.$this->getMemory().'<br>'; $start = ($page-1) * $limit; $sql = "SELECT p.id,p.wh_code,p.goods_sn FROM p_product as p WHERE p.wh_code LIKE '%YB%' OR p.wh_code LIKE '%DZWH%' LIMIT {$start},{$limit} "; $resultAll = db()->fetchAll($sql); yield $resultAll; //生成器 if (count($resultAll) != $limit) { break; } echo "第{$page}次".'generator结束内存:'.$this->getMemory().'<br>'; $page++; } } //测试生成器内存消耗 // foreach ($this->generator() as $result) { // var_dump($result[0]); // }
Je pense que vous maîtrisez la méthode après avoir lu le cas présenté dans cet article. faites attention aux choses plus excitantes. Autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
PHP implémente directement la génération d'affiches publicitaires
Explication détaillée de la classe phpqrcode pour générer du code QR
Comment obtenir les paramètres HTTP dans Egg.js
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!