yield 改写遍历目录方法,内存使用好低啊

来源:互联网 发布:pc优化软件 编辑:程序博客网 时间:2024/06/14 20:51
<?php/** * Created by PhpStorm. * User: Administrator * Date: 2017/4/27 * Time: 18:07 */ini_set('max_execution_time',0);function read_dir(){    $dir_path = './contact/';    $dir_handle = opendir($dir_path);    while( ($file = readdir($dir_handle)) !== FALSE ) {        if ($file == '.' || $file == '..') continue;        yield $file;    }    closedir($dir_handle);}function file_process($file){        $dir_path = './contact/';        $file_path = $dir_path.$file;        $file_handle = fopen($file_path,'r');        while( ( $line = fgets($file_handle) ) !== FALSE ){           yield $line;        }        fclose($file_handle);}function process(){    $use_start =  memory_get_usage();    $date = [];    foreach(read_dir() as $file){        foreach(file_process($file) as $line){            $file_name = explode("-new",$file);            $key = $file_name[0];            $date[$key] = [];            $date[$key]['sum'] = 0;            $date[$key]['exception'] = 0;            $date[$key]['sum'] +=1;            $line_data = explode(',',$line);            if(trim($line_data[2]) == ''){                $date[$key]['exception'] += 1;            }        }        $percent = ($date[$key]['exception'] / $date[$key]['sum'] ) * 100;        $date[$key]['percent'] = round($percent,2,PHP_ROUND_HALF_UP);        $runing = memory_get_usage();        echo $runing-$use_start.' ';    }}process();
0 0
原创粉丝点击