首页 > 解决方案 > 以最有效的方式编写大文件

问题描述

我正在尝试在 php 中编写一个 50+ MB 范围内的文件。

这有点像预期的那样工作,尽管速度很慢。

它运行起来很简单:

$fileAccess = fopen($filename, 'w');
fwrite($fileAccess, $line);
*a lot of lines and loops...*
fclose($fileAccess);

我的问题是。我可以做些什么来优化它。我向文件发送了大约 350000fwrite条大约 100-10000 个字符的语句,我想知道是否可以做些什么来提高文件生成的效率。是做所有这些小写更好,还是我应该在写之前在内部“缓存”一些内容,或者是否有第三个选项我只是不知道。

我必须降低内存消耗,否则我会遇到服务器限制。

谢谢

标签: php

解决方案


这可能会帮助你

// Copy big file from somewhere else
$src_filepath = 'http://example.com/all_the_things.txt'; $src = fopen($src_filepath, 'r');
$tmp_filepath = '...'; $tmp = fopen($tmp_filepath, 'w');
$buffer_size = 1024;

while (!feof($src)) {                       
   $buffer = fread($src, $buffer_size);     // Read big file/data source/etc. in small chunks
   fwrite($tmp, $buffer);                   // Write in small chunks
}

fclose($tmp_filepath);                      // Clean up
fclose($src_filepath);

rename($tmp_filepath, '/final/path/to/file.txt');

推荐阅读