Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Чтение/редактирование огромного файла на php, оптимизация и минимизация затрат ресурса 
:(
    Опции темы
Zmiuko
  Дата 5.3.2010, 15:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Я так же как и Вы склоняюсь к тому, что данное задание практически не реализовать. Черт ногу сломит. Выход можно найти, наверное еще, если использовать не целостный файл под все строки, а каждую строку складировать в файл. И иметь файл единый для атрибутов строк, допустим id<>имя файла строки но вот что если его также раздует, а его и раздует. Тоже не выход.
Полагаю необходимо находить какой-то иной алгоритм, допустим файл создается до определенного размера, затем после его заполнения создается второй, третий и так далее. но скрипт редактирования подобного хлама, будет неимоверно сложен и излишне, я бы сказал, негибок. Хотя это один из выходов.
PM MAIL WWW ICQ Skype Jabber   Вверх
Fortop
Дата 5.3.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Zmiuko, 
еще раз...

Прежде чем решать задачу, нужно ее понять. Если задача редактировать большой файл, это один вопрос (но резать его на 1000 маленьких - неполучится).
Если задача создать СУБД - то это совсем другой вопрос.

Поэтому надо не выдумывать, а взять и посмотреть в тетрадь с заданием, если конечно, все что тут говорилось про учебность не полное вранье.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
  Дата 5.3.2010, 15:42 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Допустим надо будет отредактировать строку. Получается мы пробегаем по файлам - ее находим. Тут все понятно.  Редактирование тоже понятно. Ну а вот удаление строки в середине - ставит меня в тупик. Это я про то, что если создавать не один большой файл, а множество с одинаковыми размерами - то есть не с одинаковыми, а записанными до указанного размера, естественно будут они отличаться и по размеру и по количеству строк. Получается - находим тот файл где строка, удаляем ее из него - и опля... надо переворотить всю базу - в каждом файле произвести смещение на -1 до указанного файла, в котором удалили строку. И опять тупик - если файлов, к примеру тысяча.
PM MAIL WWW ICQ Skype Jabber   Вверх
Fortop
Дата 5.3.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Fortop @  5.3.2010,  14:42 Найти цитируемый пост)
Прежде чем решать задачу, нужно ее понять.




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
  Дата 5.3.2010, 15:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Цитата(Fortop @  5.3.2010,  15:42 Найти цитируемый пост)
Zmiuko, 
еще раз...

Прежде чем решать задачу, нужно ее понять. Если задача редактировать большой файл, это один вопрос (но резать его на 1000 маленьких - неполучится).
Если задача создать СУБД - то это совсем другой вопрос.

Поэтому надо не выдумывать, а взять и посмотреть в тетрадь с заданием, если конечно, все что тут говорилось про учебность не полное вранье. 


Я оговаривал суть задания. Необходимо разрешить чтение-удаление-редактирования строк или строки в файле большого размера (более ста тысяч объемных строк, файл более 300мб-1гб). В дебри лезу, что пытаюсь, может быть построить некоторую архитектуру разбиения файла и дальнейшей работы с ним.  Выхода другого не вижу.

Если Вам интересно, то такие задания дают в НГТУ - Новосибирском гос.техническом университете.  smile

Добавлено через 1 минуту и 16 секунд
Простите, решить необходимо на php используя стандартные функции. Естественно без применения СУБД. Так бы я давно файл засунул в мускул да работал там.

Добавлено через 1 минуту и 27 секунд
И вам бы голову не морочил smile

Добавлено через 3 минуты и 9 секунд
Цитата(Fortop @  5.3.2010,  15:46 Найти цитируемый пост)
Прежде чем решать задачу, нужно ее понять.


Увы, я не имею представления как уже ее понимать и выкручиваться из данной ситуации.  smile

Добавлено через 5 минут и 7 секунд
С базами данных на текстах, работал, знаю прекрасно какое это гомно и отсутствие всякой гибкости, лишь головная боль. Но вот дали мне такое задание. Что уж теперь.
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 5.3.2010, 15:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Fortop, тут вся хитрость в том, что на самом-то деле в СУБД поиск по номеру строки мало того что почти не бывает нужен, а еще и идеологически вреден. Отсюда у нас растут другие средства. Побочным эффектом применения которых является отсутствие необходимости вырванивать файл. ;)
PM MAIL   Вверх
Fortop
Дата 5.3.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Zmiuko @  5.3.2010,  14:47 Найти цитируемый пост)
Увы, я не имею представления как уже ее понимать

Мда. А подойти к преподавателю сложно?
Взять и уточнить, какой из 2х вариантов реализовывать.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
  Дата 5.3.2010, 15:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



А вот еще мысль пришла, читать файл, как предложено было ранее в своеобразный temp, а удаление-редактирование проводить посредством кеширования запросов. То есть удалили-отредактировали строку - ничего с фалом не делаем, а просто создаем новый, где указываем что удалили либо как отредактировали. Далее просто читаем файл для вывода заного, а в цикле чтения открываем второй файл и просто заменяем визуально все проводимые изменения. Выход?

Добавлено через 40 секунд
Цитата(Fortop @  5.3.2010,  15:54 Найти цитируемый пост)
Мда. А подойти к преподавателю сложно?
Взять и уточнить, какой из 2х вариантов реализовывать. 


Там ответ простой: у Вас есть голова? Думайте!..
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 5.3.2010, 15:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



ого, сколько уже успели понаписать.
однако, автор уже ближе к тому, чтобы изобрести эти самые средства smile 
но при этом он уже противоречит изначальной постановке задачи. у нас уже не "файл", а "массив данных" без строго определенной формы - если говорить ормальным языком. 
Вот к чему приводит скрытность, граничащая с издевательством - сначала долго рассказывать про файл, зсаставлять людей тратить время на составление и отладку примеров - а потом вдруг сказать, что файл большой и не нужен.
И даже после этого точный текст задания все равно остается засекречен
PM MAIL   Вверх
Fortop
Дата 5.3.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Ипатьев, ? Причем тут поиск записей?
Я все же пока еще верю, что ТС решает задачу именно "редактирования" файла, а не написания собственной СУБД.

Добавлено через 49 секунд
Цитата(Zmiuko @  5.3.2010,  14:57 Найти цитируемый пост)
Там ответ простой: у Вас есть голова? Думайте!.. 

Тогда выбираешь первый понравившийся и реализуешь его.
В чем сложность?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
  Дата 5.3.2010, 16:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Цитата(Ипатьев @  5.3.2010,  15:59 Найти цитируемый пост)
ого, сколько уже успели понаписать.
однако, автор уже ближе к тому, чтобы изобрести эти самые средства  
но при этом он уже противоречит изначальной постановке задачи. у нас уже не "файл", а "массив данных" без строго определенной формы - если говорить ормальным языком. 
Вот к чему приводит скрытность, граничащая с издевательством - сначала долго рассказывать про файл, зсаставлять людей тратить время на составление и отладку примеров - а потом вдруг сказать, что файл большой и не нужен.
И даже после этого точный текст задания все равно остается засекречен 


Стоп! Стоп! Не ерничать! никто вам не чего не засекречивал. Я имел ввиду заранее делить этот файл, дальше с кусками работать!

Добавлено через 47 секунд
Нужна была бы СУБД, я бы уж выход нашел... TXTSQL, к примеру взять во внимание.

Добавлено через 8 минут и 1 секунду
Цитата(Fortop @  5.3.2010,  16:01 Найти цитируемый пост)
В чем сложность? 


да думал, есть какие-то оптимальные решения.. а все достаточно просто, делить да складывать обратно... Для себя ответ нашел в нерентабельности редактирования большущего файла на php - стоит осуществлять посредством модулей и сторонних процессов. Сделать-то конечно сделаю, вариантов уже описано множество, благодарю Вас за Ваше терпение smile

Ипатьев и тебя благодарю, хоть ты сворливый и вредный, позже все-таки персонально для тебя создам тему о создании собственной СУБД!  smile

Добавлено через 10 минут и 24 секунды
А всеж вы правы в чем-то. Если производить дележку файла - то далее вся работа с ним похожа на работу СУБД. Вот только складывать обратно потом надо. Хотя можно просто циклом "подбирать куски".
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 5.3.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Fortop, ну, мы ушли немного в сторону, к архитектуре БД.
О ней я и писал, о том, что вариант 2 не так уж и нужен в современных СУБД.
PM MAIL   Вверх
Zmiuko
Дата 5.3.2010, 16:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Что касается работы огромного файла, кстати, то сталкивался с проблемой работы с *.xls - php наотрез отказывался обрабатывать 9 мегабайтный файл.

Добавлено через 1 минуту и 16 секунд
И задание было схожее - произвести по нему поиск и выдать результат в виде *.xml . Ну как сами понимаете - интернет магазин.

Добавлено через 4 минуты и 45 секунд
Так вот проблема была в том, что содержимое *xls по-идее надо было в SQL-базу загрузить. Но Ваш покорный слуга делал шиворот-на-выворот, "на лету" обрабатывал *.xls в *.xml-вариант, а уж потом складывал его в базу. Ну и php, наотрез отказывался до конца обрабатывать этот *.xls .
PM MAIL WWW ICQ Skype Jabber   Вверх
Fortop
Дата 5.3.2010, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Ипатьев,
Чтобы не было недоразумений -  вариант 2 это не ограничение длины записи, а структурирование информации, в том числе и при помощи дополнительной метаинформации (индексы, страницы, ссылки и т.д.)
Ограничение длины строки - это всего лишь палиатив предложенный в данном конкретном случае для ТС.

Цитата(Zmiuko @  5.3.2010,  15:03 Найти цитируемый пост)
Если производить дележку файла - то далее вся работа с ним похожа на работу СУБД. Вот только складывать обратно потом надо

Если резать файл, то ничего складывать не надо.
1 строка - 1 файл.
Только следует понимать, что в данном случае мы работаем не с файлом, а массивом данных(информации) размещенным в множестве файлов.

Если в учебном задании написано "редактировать файл" то придется работать именно с одним файлом. Все редактирование которого будет сводиться к построчной перезаписи в новый файл.
Или в случае строк фиксированной длины - перезаписи одной единственной строки в самом файле при помощи функций, что я давал в самом начале топика.

Это сообщение отредактировал(а) Fortop - 5.3.2010, 16:27


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
Дата 5.3.2010, 16:30 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Если в PHP программисты большое внимания уделили чтении-записи файла, таких проблем бы точно не было.

Добавлено через 19 секунд
Имею ввиду про его создателей.
PM MAIL WWW ICQ Skype Jabber   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0705 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.