
19.12.2008, 01:16
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
С нами:
10191686
Репутация:
210
|
|
Сообщение от Pashkela
Файловый резак, причем с исходниками:
http://old.softerra.ru/softnews/2002/5/6/20594/
Извини конечно, но зачем мне "Файловый резак"???
Тем боле Windows, я же не фильм на депозит выкладываю
Читаем внимательно вопрос!
Файл есстественно, можно было и вручную по таблицам разбить, в том то и вопрос, что система должна быть автоматизирована (по нажатию кнопочки), не мне обновлять, а заказчику...
А чем тебе не нравится построчное считывание? В соответствии с правилами твоей задачи, считывать по одной строке, проводить ее анализ и выполнять далее какие-то действия... Сомневаюсь, что выйдет гиперсложный алгоритм, тем более, что тебе, вобщем-то, насколько я понял, не надо проверять корректность данных... Так что можно помозговать, рассказывай конкретнее
Та алгоритм - не сложный, как я говорил, простой конечный автомат уже сделал, НО
С file все работате нормально на маленьких файлах...
Но большие скорее всего не потянет, вот и спрашиваю, может у кого есть другие идеи,
При 300 000 записей только в одной таблице, а таблицы будет скорее всего 3, нехватка памти, на локалхосте, еще ладно... но на серваке...
уже обдумаю о том, что заказчику понадобится выделенный сервант, что бы хотя бы с file запустить
Последний раз редактировалось Naydav; 19.12.2008 в 01:21..
|
|
|

19.12.2008, 01:27
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
Сообщение от Naydav
Извини конечно, но зачем мне "Файловый резак"???
Не знаю, зачем, но я только что за 3 сек порезал дамп весом в 43 мб на 89 частей каждая по 500 кб. Не надо так не надо. Умничай дальше
|
|
|

19.12.2008, 01:34
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
С нами:
10191686
Репутация:
210
|
|
Сообщение от Pashkela
Не знаю, зачем, но я только что за 3 сек порезал дамп весом в 43 мб на 89 частей каждая по 500 кб. Не надо так не надо. Умничай дальше
Так хоть за 1 сек. 2 Гб обьясни, хотя бы себе, как я могу с моей задачей использовать твой совет? Неужели так трудно вопрос прочитать? вот именно, что "Не знаю, зачем"
|
|
|

19.12.2008, 01:25
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
ты не понял, я не говорю о том, чтобы затягивать в память такую громадину, это, действительно, было бы глупо, а читать его, ИМХО, нужно построчно и передвигать указатель в файле, таким образом мы уйдем от больших затрат памяти, но получим затраты времени на обращение к ЖД и процессороного времени, но это уже будет совсем не такой критичный к ресурсам алгоритм. А еще лучше будет читать это все порциями...
Последний раз редактировалось ss88; 19.12.2008 в 01:31..
|
|
|

19.12.2008, 01:31
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
С нами:
10191686
Репутация:
210
|
|
Сообщение от ss88
ты не понял, я не говорю о том, чтобы затягивать в память такую громадину, это, действительно, было бы глупо, а читать его, ИМХО, нужно построчно и передвигать указатель в файле, таким образом мы уйдем от больших затрат памяти, но получим затраты времени на обращение к ЖД и процессороного времени, но это уже будет совсем не такой критичный к ресурсам алгоритм
Я не могу считывать его построчно, так как не знаю размер строки...
Может я я не могу понять, что ты хочешь сказать, можно пример?
как реализовать считыванеи построчно? например прочтения 564 000 -ой строки?
|
|
|

19.12.2008, 01:35
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
увеличением и запоминанием позиции чтения из файла. fseek(...)
Последний раз редактировалось ss88; 19.12.2008 в 01:37..
|
|
|

19.12.2008, 01:39
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
С нами:
10191686
Репутация:
210
|
|
Сообщение от ss88
увеличением и запоминанием позиции чтения из файла.
Т.е что -то типа
- открыл файл
- считал инфу до переноса строки
- запомнил позицию
но после скажем 300 000 - ой строки,
нам при новом обращении к файлу, нужно будет осчитывать 300 000 переносов строк, пот 300 001, 300 002 и т.д.
ну это еще медленней чем file
Или как запоминать позицыю строки? приведи пример хотя бы на файле в 10 строк
---------
смотрю с fseek
при использовании fseek, нужно ЕЩЕ вычислять размер КАЖДОЙ считанной строки, что бы знать куда потом вернутся + алгоритм считывание новой строки до символа переноса строки( именно не побайтово, а до переноса строки) = еще медленее, вернее вообще хреново...
Чем больше вариантов пробую, тем убеждаюсь - не нужно изобретать велосипед - file()
но вариант был интересный 
Последний раз редактировалось Naydav; 19.12.2008 в 01:55..
|
|
|

19.12.2008, 01:41
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
щаз приведу
|
|
|

19.12.2008, 01:54
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
С нами:
10191686
Репутация:
210
|
|
Сообщение от ss88
щаз приведу
Да все же уже, не нужно
я не увидел твой пост после редактирования, отписался выше
|
|
|

19.12.2008, 01:55
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
PHP код:
<?php
$currPos=0;
$hFile=fopen("dump.txt","r");
//считывание порции определенного размера
$currentPartOfData=fread($hFile,4096);
$currPos+=4096;
//дочитыване до конца последней строки
do
{
$currPos++;
$currentPartOfData.=$byte=fread($hFile,1);
}
while($byte!='\n')
?>
Сырой и толком непродуманный пример считывания порции из твоего файла, после обработки текущей порции, считывание продолжается оттуда, где мы закончили и читается следующая порция... Нужно учитывать длину файла. Собственно, вот, это будет лучше, чем забить несколько файлов по полгектара в память
Последний раз редактировалось ss88; 19.12.2008 в 01:59..
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|