Иногда надо (вернее приходится) обрабатывать огромные (от 100 и далее Mb) файлы... Эта обработка на PHP всегда занимает довольно продолжительное время. Поэтому необходимо производить обработку в несколько проходов, запоминая место где остановился....
Вот небольшой пример того как можно обработать большой CSV файл...
Смотреть в цвете на Pastebin $file_name = "путь до файла";
if (($file = fopen($file_name, "r")) !== FALSE){
# проверяется, надо ли продолжать импорт с определенного места
# если да, то указатель перемещается на это место
if(isset($_GET['fpos'])) fseek($file,$_GET['fpos']);
$i=0;
if(isset($_GET['x'])) $x=$_GET['x'];
else $x = 0;
while ( ($data_from_file = fgetcsv($file, 1000, ";"))!== FALSE) {
# Какие-нить операции с $data_from_file[0] и добавление записи
if(!strstr($i/1000,'.')) echo 'Добавлено данных : ',$x,"\n";
if($i==10000){
echo '«meta http-equiv="Refresh" content="0; url=",$_SERVER["PHP_SELF"],"?x=",$x,"&fpos=",ftell($file),'"»';
exit;
}
$x++;
$i++;
}
fclose($file);
echo 'Всего добавлено данных : ',$x,"\n";
}
Скрипт обрабатывает по 10000 записей и перезапускает себя...