Php 抓取大文件时内存限制问题
Php memory limit issue while scraping huge file
我正在使用 Simple Html Dom 抓取这个巨大的 xml 文件(300k 行 ~ 11MB)并且内存限制存在一些问题。所以我添加了一些 php.ini 命令来覆盖默认设置并启用对内存的完全控制。坏主意。
我的代码:
include('simple_html_dom.php');
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '-1');
$xml = file_get_contents('HugeFile.xml');
$xml2 = new simple_html_dom();
$xml2->load($xml);
foreach($xml2->find('tag1') as $element) {
$element->innertext = str_replace('text to replace','new text',$element>innertext);
}
$html->save('output'.xml');
}
现在,有没有办法让这个脚本在合理的时间内顺利运行而没有任何内存问题?
这可以使用文本编辑器轻松完成,但我需要将其自动化,因为我有很多文件要编辑。
找到了更好的方法:这里不需要 DOM,我只是 str_replace
将 file_get_contents
返回的字符串中的内容放入另一个文件中 [= =13=]。简洁利落:
$xml = file_get_contents('HugeFile.xml');
$new = str_replace('text to replace','new text',$xml);
file_put_contents('output.xml');
并且 preg_replace
可能会派上用场进行复杂的修改。
我正在使用 Simple Html Dom 抓取这个巨大的 xml 文件(300k 行 ~ 11MB)并且内存限制存在一些问题。所以我添加了一些 php.ini 命令来覆盖默认设置并启用对内存的完全控制。坏主意。
我的代码:
include('simple_html_dom.php');
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '-1');
$xml = file_get_contents('HugeFile.xml');
$xml2 = new simple_html_dom();
$xml2->load($xml);
foreach($xml2->find('tag1') as $element) {
$element->innertext = str_replace('text to replace','new text',$element>innertext);
}
$html->save('output'.xml');
}
现在,有没有办法让这个脚本在合理的时间内顺利运行而没有任何内存问题? 这可以使用文本编辑器轻松完成,但我需要将其自动化,因为我有很多文件要编辑。
找到了更好的方法:这里不需要 DOM,我只是 str_replace
将 file_get_contents
返回的字符串中的内容放入另一个文件中 [= =13=]。简洁利落:
$xml = file_get_contents('HugeFile.xml');
$new = str_replace('text to replace','new text',$xml);
file_put_contents('output.xml');
并且 preg_replace
可能会派上用场进行复杂的修改。