我有两个文件,文件大约5MB,文件b大约66 MB。我需要找出是否有任何文件a中的行出现在文件b中,如果是,则将它们写入文件c。stristr和速度
这是我目前处理它的方式:
ini_set("memory_limit","1000M");
set_time_limit(0);
$small_list=file("a.csv");
$big_list=file_get_contents("b.csv");
$new_list="c.csv";
$fh = fopen($new_list, 'a');
foreach($small_list as $one_line)
{
if(stristr($big_list, $one_line) != FALSE)
{
fwrite($fh, $one_line);
echo "record found: " . $one_line ."<br>";
}
}
的问题是它的运行方式(成功)了一个多小时和它也许3000线成较小的文件160,000。有任何想法吗?
这有点高于我的头,你知道一个很好的资源,我可以学习如何正确地做到这一点? – Mike 2010-09-08 05:09:13
为您添加了一个示例。似乎工作正常,但我还没有完全进行广泛的调试。应该足以让你看到发生了什么事情,并且与原来相比,它将在少量空间中运行。 – Mike 2010-09-08 05:37:03
哇,它设法在45秒内完成整个65mb文件...非常感谢,你真的为我节省了一个非常非常深的夜晚。另外自动地是我最喜欢的词。 – Mike 2010-09-08 05:41:59