<?php/** * Created by PhpStorm. * User: zrj * Date: 18-6-22 * Time: 上午10:49 */declare(strict_types=1);//开启强类型模式class DB{ ???private static $instance = null; ???private static $sth = null; ???private function __construct() ???{ ???????try { ???????????$dsn = "mysql:host=192.168.1.9;dbname=yundou_v3"; ???????????static::$instance = new \PDO($dsn, ‘user‘, ‘password‘); ???????} catch (PDOException $e) { ???????????echo ‘Connection failed: ‘ . $e->getMessage(); ???????????exit(); ???????} ???????static::$instance->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); ???} ???public static function getInstance() ???{ ???????if (!(static::$instance instanceof \PDO)) { ???????????new static(); ???????} ???????return static::$instance; ???} ???public static function excuteQuery(string $sql) ???{ ???????static::$sth = static::$instance->prepare($sql); ???????static::$sth->execute(); ???} ???//防止实例被克隆 ???private function __clone() ???{ ???} ???public static function cursor() ???{ ???????while ($row = static::$sth->fetch(\PDO::FETCH_ASSOC)) { ???????????yield $row; ???????} ???}}DB::getInstance();DB::excuteQuery("select * from bill_info");foreach (DB::cursor() as $info) { ???echo $info[‘id‘] . PHP_EOL;}
PHP量级数据遍历方案:yield生成器
原文地址:http://blog.51cto.com/phpme/2131743