dig555
Постоялец
- Регистрация
- 22 Июн 2007
- Сообщения
- 365
- Реакции
- 160
- Автор темы
- #1
Очень простая задачка. Есть файл strings.txt. В нём порядка 200-400К(!) строк. Задача - во время выполнения определённого процесса удалять первую строку из файла. Наваял простенькое решение:
Проблема в том, что файл очень большой. И постоянное чтение/перезапись отнимает очень много времени. Подскажите, как записывать все строки кроме удалённой целиком, а не построчно. Может строкой или ещё как. Главное - максимальное быстродействие.
PHP:
<?
while (не достигнут результат){
$file="strings.txt";
$allkeys=file($file);
echo "Первая строка ".$allkeys[0]."<br />";
//Совершаем какое-то действие c $allkeys[0]
//Удаляем строку и перезаписываем файл
unset($allkeys[0]);
unlink($file);
foreach($allkeys as $one=>$two){
$fp=fopen($file,"a+");
fwrite($fp,$two);
fclose($fp);
}
}
?>
Проблема в том, что файл очень большой. И постоянное чтение/перезапись отнимает очень много времени. Подскажите, как записывать все строки кроме удалённой целиком, а не построчно. Может строкой или ещё как. Главное - максимальное быстродействие.