PHP生成器实战:高效处理大数据集的终极方案

2025-07-30 0 335

PHP生成器实战:高效处理大数据集的终极方案

一、技术优势

生成器使内存占用减少95%,大数据处理速度提升300%

// 传统方式内存占用:500MB
// 生成器方式内存占用:1MB

二、核心语法

1. 基础生成器

function numberGenerator($max) {
    for ($i = 1; $i <= $max; $i++) {
        yield $i;
    }
}

foreach (numberGenerator(1000000) as $number) {
    echo $number . "n";
}

2. 键值对生成

function keyValueGenerator() {
    yield 'name' => '张三';
    yield 'age' => 25;
    yield 'job' => '工程师';
}

foreach (keyValueGenerator() as $key => $value) {
    echo "$key: $valuen";
}

三、高级应用

1. 大文件读取

function readLargeFile($filename) {
    $file = fopen($filename, 'r');
    
    while (!feof($file)) {
        yield fgets($file);
    }
    
    fclose($file);
}

foreach (readLargeFile('huge.log') as $line) {
    // 处理每行日志
}

2. 数据库分页

function paginateResults(PDO $db, $query, $pageSize = 100) {
    $page = 0;
    
    do {
        $offset = $page * $pageSize;
        $stmt = $db->query("$query LIMIT $offset, $pageSize");
        $results = $stmt->fetchAll();
        
        yield from $results;
        
        $page++;
    } while (count($results) == $pageSize);
}

四、完整案例

CSV数据转换器

function csvToJson($csvFile) {
    $file = fopen($csvFile, 'r');
    $headers = fgetcsv($file);
    
    while ($row = fgetcsv($file)) {
        $jsonRow = [];
        foreach ($headers as $index => $header) {
            $jsonRow[$header] = $row[$index] ?? null;
        }
        yield $jsonRow;
    }
    
    fclose($file);
}

// 使用示例
foreach (csvToJson('data.csv') as $json) {
    file_put_contents('output.json', json_encode($json) . "n", FILE_APPEND);
}

// 仅用于展示交互效果
function runDemo() {
alert(‘尝试在PHP环境中运行生成器代码,观察内存使用情况’);
}

PHP生成器实战:高效处理大数据集的终极方案
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

淘吗网 php PHP生成器实战:高效处理大数据集的终极方案 https://www.taomawang.com/server/php/699.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务