У меня есть текстовый файл весом около 3мб.
Данные в нем хранятся в таком виде:
name1 777 888 999
name2 777 888 999
name3 777 888 999
...
...
Все пробелы это табуляция!
Всего строк на данный момент чуть больше 42 тысяч.
Мне необходимо превратить это в массив такого вида:
[0]
[0][0] - name1
[0][1] - 777
[0][2] - 888
[0][3] - 999
[1]
[1][0] - name2
[1][1] - 777
[1][2] - 888
[1][3] - 999
...
...
Делаю так:
$namefile = 'file.tsv';
$file = file($namefile);
foreach($file as $k => $v){
$nfile[$k] = explode("\t",$v);
}
print_r($nfile);
А теперь ПРОБЛЕМА! Этот код работает в тестовом режиме(в файле всего 10 строк), но когда в файле 42000 строк то скрипт не работает... В чем может быть проблема?
1. Kubert - 02 Сентября, 2011 - 13:01:43 - перейти к сообщению
2. EuGen - 02 Сентября, 2011 - 13:03:38 - перейти к сообщению
В том, что не хватает памяти, всеже file() загрузит в память все сразу.
Читайте построчно.
Читайте построчно.
3. Kubert - 02 Сентября, 2011 - 13:14:00 - перейти к сообщению
EuGen пишет:
В том, что не хватает памяти, всеже file() загрузит в память все сразу.
Читайте построчно.
Читайте построчно.
После небольшого теста читает только 35283 строк, на 35284 уже вырубается)
А как построчно? Открывать файл с определенной строкой, потом закрывать и так несколько раз? К примеру по 10000 строк?
4. EuGen - 02 Сентября, 2011 - 13:19:28 - перейти к сообщению
Пример чтения здесь:
http://php.su/functions/?fgets
http://php.su/functions/?fgets
5. Kubert - 02 Сентября, 2011 - 13:31:05 - перейти к сообщению
EuGen пишет:
Пример чтения здесь:
http://php.su/functions/?fgets
http://php.su/functions/?fgets
тоже самое, блин! В чем я не прав?