|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.02.2010, 08:44 | #1 |
Регистрация: 20.03.2009
Сообщений: 8
|
Считывание диапазона строк из файла.
Доброго времени суток.!
сразу к делу. Есть файл где посторочно записаны данные: PHP код:
Подскажите. |
25.02.2010, 09:32 | #2 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
PHP код:
Стрелок-охотник
Последний раз редактировалось mv28jam; 25.02.2010 в 09:35. |
26.02.2010, 15:31 | #3 |
php / delphi
Форумчанин
Регистрация: 10.06.2007
Сообщений: 175
|
Как вариант можно и так:
PHP код:
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра. Последний раз редактировалось InternetStranger; 26.02.2010 в 16:43. |
26.02.2010, 15:46 | #4 |
Пользователь
Регистрация: 25.02.2010
Сообщений: 26
|
InternetStranger, в твоем варианте будет строки будут браться не со 2й а с 3й, ты забыл про 0й элемент массива, чем циклы крутить можно воспользоваться функцией array_slice
InternetStranger, ну а если файл весит 1 -2 гига что будет? Последний раз редактировалось wanick; 26.02.2010 в 15:49. |
26.02.2010, 15:54 | #5 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
to InternetStranger
Если использовать предложенный вами код то мы получим целый файл, какого бы он обьема не был, в оперативной памяти, а нам то надо только 4 строки. Особенно опасно использовать ваш код в случае если кол-во строк > 1000.
Стрелок-охотник
|
26.02.2010, 18:25 | #6 | ||
php / delphi
Форумчанин
Регистрация: 10.06.2007
Сообщений: 175
|
Цитата:
Да что говоришь?! Смотри внимательно первый пост. Хоть автор ничего и не сказал, но наличие 3х колонок не натолкнуло на мысль необходимости пропарсить эти строки. Теперь посмотри во второй пост - mv28jam - его натолкнуло - fgetcsv($handle, 1000, "|"));. И как будем парсить не перебирая строки? в моем случае это делается небольшой модификацией PHP код:
Цитата:
- хостинг средней паршивости предоставляет скрипту ~ 10 Mb (на глазок). - 1000-10000 строк - это примерно 30-300 Kb. Что плохого, в том, чтобы обрабатывать не из файла, а из оперативной памяти? По-моему, так быстрее. Не тестировал конечно - поправьте если я чего-то не знаю. Но моя политика такая (заметьте, никому не навязываю) - сводить все манипуляции с БД и диском к единым запросам. ps: Я вообще-то хотел указать автору на альтернативное решение, а вовсе не ставил своей целью указывать на непроффесионализм чужого кода (как вам, возможно, показалось), тем более если автор не указывал границы применимости скрипта. pss: Если уж речь зашла о файлах большого размера (скажем 1Gb ~ 35791394 строк), то ни один здравомыслящих программистов не станет использовать ни file(), ни fgets() (т.е. в текстовом режиме). Я почти уверен, что скрипт загнется по истечении 20-30 сек. ограничения. php вообще не для этих целей, но если придется, то вот как я бы поступил - читал бы в бинарном режиме: PHP код:
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра. |
||
26.02.2010, 18:58 | #7 | |||
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
А зря не соглашаетесь, я вам как человек который работает с высоконагруженными приложениями говорю.
Цитата:
Цитата:
Цитата:
Код:
Стрелок-охотник
Последний раз редактировалось mv28jam; 26.02.2010 в 19:01. |
|||
26.02.2010, 18:58 | #8 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
продублировался пост
Стрелок-охотник
Последний раз редактировалось mv28jam; 26.02.2010 в 19:00. Причина: duplicate |
26.02.2010, 19:29 | #9 | ||
php / delphi
Форумчанин
Регистрация: 10.06.2007
Сообщений: 175
|
Цитата:
Хм... про fgets наверное я поторопился. Вот где бы посмотреть как работает эта процедура, исходников-то нету. И дезассемблировать не получится. Но интуиция подсказывает, что все таки надежнее работать с низкоуровневыми процедурами )) Цитата:
А я работаю с высокоскоростными вычислениями на настольных системах ))
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра. Последний раз редактировалось InternetStranger; 26.02.2010 в 19:34. |
||
26.02.2010, 19:50 | #10 | |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Цитата:
Скажем так, мой код работает на сайтах с загрузкой от 600 просмотров в минуту. Подробности только в личку.
Стрелок-охотник
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как получить в VBA номера строк выделенного диапазона? | Chelentano | Microsoft Office Excel | 10 | 04.11.2010 14:25 |
c++ считывание с файла. | tsergey | Помощь студентам | 20 | 24.04.2010 23:30 |
Считывание строк из файла | Mikimaus | Общие вопросы C/C++ | 1 | 05.12.2009 21:05 |
Считывание строк из файла. перемещение по строкам "веред"-"назад" | Larkin. | Помощь студентам | 2 | 15.06.2009 17:58 |
Считывание строк в массив | mc_12 | Общие вопросы C/C++ | 4 | 05.01.2009 13:11 |