Brodyaga

Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Cheery и так идет борьба-память или время Код: <?php $filename="new.txt"; $defpartsize=500000; $fsize=filesize($filename); if($fsize<=$defpartsize){ $num_parts=20; } else{ $num_parts=ceil($fsize/$defpartsize); } $part=ceil($fsize/$num_parts); $sum=0; for($i=0;$i<=$num_parts-1;$i++){ $parts[$i]=$part; $sum+=$part; } $lastpart=$fsize-($sum-$part); $parts[$num_parts-1]=$lastpart; $fpm=fopen($filename,"r"); $fpa=fopen("$filename.tmp","w"); foreach($parts as $k=>$v){ $from=array_sum(array_slice($parts,0,$k)); $to=$from+$v; fseek($fpm,$from); $fp=fopen("$filename$k","w"); fwrite($fp,fread($fpm,$v)); fwrite($fpa,join("",array_diff(array_unique(file("$filename$k")),array("\n")))); fclose($fp); unlink("$filename$k"); } fclose($fpa); $fpa=fopen("$filename.new","w"); fwrite($fpa,join("",array_diff(array_unique(file("$filename.tmp")),array("\n")))); fclose($fpa); unlink($filename.".tmp"); ?> | А вот ещё вариация-можно явно указать, на какие части резать.Кстати, получилось быстрее! Я указал 500000 и скорость ощутимо увеличилась, я даже сам не ожидал. Добавлено: Ставим 100000 и наслаждаемся работой скрипта.Кто-нибудь, потестите с жестким ограничением памяти, у меня не получается перегрузить ЦП
|