PHP 生成器处理大文件
function readLocalFile($fileName)
{
$handle = fopen($filename, 'rb');
$lines = [];
while(!feof($handle)){//feof 测试文件指针是否到了文件结束的位置
$lines[] = fgets($handle);
}
fclose($handle);
return $lines;
}
function readYieldFile($fileName)
{
$handle = fopen($filename, 'rb');
while(!feof($handle)){//feof 测试文件指针是否到了文件结束的位置
yield fgets($handle);
}
fclose($handle);
}
function formatBytes($bytes)
{
if($bytes < 1024){
return $bytes."b";
}else if($bytes < 1048576){
return round($bytes / 1024,2).'KB';
}
return round($bytes /1048576,2).'MB';
}
$lines = readYieldFile('./info.txt');
foreach($lines as $row){
echo formatBytes(memory_get_peak_usage());
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐一个转换函数