![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Ребят, у меня проблема.
Все знают как открыть файл на php, как его видоизменить посредством php, как удалить, выставить права и т.д. Проблема у меня заключается в том, что необходимо прочесть, а точнее выдернуть строку из огромного файла, будь то 100-мегабайтный или гигабайтный файл. И не только выдернуть, но и потом редактировать. Например какая либо cvs база, условно. Короче, как, каким образом можно оптимизировано и легко прочесть строку в гигабайтном файле на php? По мне в теории неясно какие функции читают файл в целом, а какие можно использовать для перемещения курсора, таким образом чтобы и строка была найдена-прочитана, да еще чтобы файл целиком не читался и не вызывал остановку скрипта. Плюс то что ограничение в php всего на 8 мегабайт. Прошу помощи, так как уже долго маюсь этой проблемой. Не могу разрешить. Заранее благодарен. Добавлено через 2 минуты и 47 секунд Речь идет не об использовании сторонних модулей, либо самописных на стороне сервера, речь идет об обычном php, стандартных функциях. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
http://php.net/fgets - читать построчно. А вот изменить файл без полной перезаписи будет много сложнее. (и это зависит от того используются ли равноразмерные строки, или же переменной длины) Для редактирования равноразмерных строк можно использовать http://php.net/rewind http://php.net/fseek http://php.net/fwrite -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Но fgets() читает весь полностью файл до указания байта. То есть файл весом в 1,5 Gb мы должны прочитать полностью, к примеру, 1,2 Gb, чтобы найти искомую строку. Любой хостинг, даже с указанием максимально возможного времени выполнения php-скрипта закроет выполнение с ошибкой и указателем на строку, на которой остановилось данное выполнение.
А вот если же мы какую либо базу держим в ассоциативных массивах, условно, для примера, то тут вообще почти будет невозможным совершить какое-либо чтение при достижении файла даже 10 мегабайт? Нинавижу тестовые задания! Добавлено через 10 минут и 35 секунд Задам вопрос по-другому, к примеру на сайт загружен файл для последущего анализа php-скриптом, в нем, к примеру много-много сток, около 10-50 тысяч, файл вида: строка1 строка2 строка3 ... строка12742 строка12743 ... строка54001 строка54002 ... строка100234 строка100235 ,около 100235 строк, строки большие, где-то по 1 кб каждая. Каким образом, посредством классического, пускай процедурного php, без сторонних модулей, возможно выдернуть и изменить строку, скажем 23567-ую ? |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Если бы вы были внимательны, прочли в документации о том, что length Reading ends when length - 1 bytes have been read, on a newline (which is included in the return value), or on EOF (whichever comes first). If no length is specified, it will keep reading from the stream until it reaches the end of the line. Из чего мы делаем вывод, что fgets читает с буфером построчно, где буфер - максимально возможная длинна строки в файле. Совершенно не важно какого размера файл, подобная конструкция прочтет его целиком не поперхнувшись:
И т.п., надеюсь из этого примера ясно, что с чем надо потреблять? -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Ну, тогда извиняюсь.
Проблему чтения файла большого размера я еще решил подобным образом: 1) читаем файл по кускам... 2) кусками сохраняем во временный файл... 3) если во временном файле искомого не обнаружено... то стираем временный файл и приступаем к чтению и сохранению следующего куска... за 24 секунды выводит строку из 300mb файла Но как быть с редактированием, тут сложнее, или возможно также делить кусками, что вполне реально и при нахождении строки заменять ее, а затем куски "склеивать" ? |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
||||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Я просто ищу какое-либо решение и выход из поставленной ситуации. Пока не могу придумать.
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
А не надо ничего придумывать.
Если кто-то поставит задачу возить на велосипеде пятитонные металлоконструкции, то надо не думать над решением. А думать над умственным здоровьем постановщика задачи. И искать более адекватного. С какой стати возник вопрос об оптимальной записи? Какая разница, будет она делаться 5 минут или 25? Добавлено через 1 минуту и 14 секунд Повторю, если непонятно. Если задача ставится заведомо нерешаемая, то не нужно думать над ее решением. Надо думать над ее изменением. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Хм. Но коль мне необходимо решить эту проблему, хочу я этого или нет. К чему философия?
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
К тому, что "необходимо" - это заблуждение, разумеется.
|
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
А это случайно не видеофайл?
|
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
Это сообщение отредактировал(а) gcc - 27.2.2010, 23:19 |
|||
|
||||
| gcc |
|
||||||||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
если строки упорядоченные, отсортированные, так как вы написали, то нужно использовать "Двоичный_поиск" http://ru.wikipedia.org/wiki/%D0%94%D0%B2%...%B8%D1%81%D0%BA и друугие методы математические http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%...%86%D0%B8%D0%B8 из wikipedia для бинарного:
поиск по файлу в 20Гиг будет не более чем 2-3 сек. и не будут использоватся ресурсы....
чтобы добавить в конец, можно использовать не буферизированные Сишные функции syswrite и sysread чтобы добавить в файл не открывая весь файл Это сообщение отредактировал(а) gcc - 28.2.2010, 04:49 |
||||||||||||
|
|||||||||||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
gcc, это было круто, однако у человека задача сделать сие на PHP, а поскольку задача скорее всего учебная, то другой язык не подойдет.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Не, ну "упорядоченные-то и отсортированные" строки и на пхп любой дурак сделает.
Но проблема в том, кто эти строки упорядочивать будет... |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
IZ@TOP, автор может легко переписать на php
я не нашел вариант на php, по этому написал такой вариант который я видел вариант на php, я видел даже на этом форуме, но найти не смог... просто мне сейчас такой алгоритм не нужен, если автору нужен, то он может же переписать из существующих скриптов? Добавлено @ 18:15 Ипатьев, это скорее всего учебное задание. ну memcache придумали как раз чтобы минимизировать запросы к СУБД, чтобы она не жрала память, а чтобы можно было быстро найти по ключам закешированные данные и отдать их... Это сообщение отредактировал(а) gcc - 1.3.2010, 18:38 |
|||
|
||||
| Zmiuko |
|
||||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
C видеофайлом намного проще, там можно использовать фреймы.
Проблема не сколько в упорядоченных и отсортированных строках. Проблема в их количестве. Благодарю. С чтением огромный файлов разобрался. Но никак не могу разобраться с алгоритмом редактирования-изменения-удаления конкретной строки... Чтение файла можно изобразить как и в мускул - посредством простого деления и кеширования данных. Но вот редактирование. Можно добавить в конец или начало - тут также понятно все, а вот чтобы распарсить файл весом в 2 гб, найти искомое, заменить и обратно сохранить - проще ответить что на php сие не возможно. Но подобный ответ заранее неприемлем. Добавлено через 8 минут и 47 секунд Посмотрел различные решения, но нигде, кроме как на иностранных источниках подробно не затронута данная проблема. Хотя заметим php-интерпретатору не первый год. Легче переложить все на плечи драйверу СУБД, нежели разобраться в реализации. Что характерно, все пишут про проблему чтения файла весом в 2-300гб, но нигде не могут полноценно ответить на вопрос о его изменении. Кроме того ответ: не надо подобные задание не давать - не решать... а что насчет PEAR или каких-либо классов, что насчет постоянного поиска подобных скриптов - gif-анимация на php, округление углов png-альфа канал, различные хитрости и прочее? Почти каждый имел дело с поиском какого-либо решения. И я полагаю каждый php-программист получал в ответ: на php это нереализуемо! Что на самом деле опровергалось простым анализом и использованием стандартных методик, правда, года через два. |
||||
|
|||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
что значит невозможно?
возможно на любом языке программирования. это стандартная операция, которая производится на любом компьютере миллионы раз в день
Цацку-то снимите, про крутого программиста, не позорьтесь. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Как бы то не было: позицию огромного файла можно сравнить с позицией тяжелой и массивной sql базы данных. Думаю, при постоянном обновлении и огромном количестве информации работа с тем и другим приобретает характер некой сравнительной одинаковости - то есть что так, что там - позиция что "а не надо подобное в подобном хранить да в таком количестве и все будет - окей" уже используется не столько в адрес использования файла, сколько уже и в адрес СУБД в целом.
На данный момент это у меня учебное задание: реализовать на php сохранение-изменение-удаление строк/строки в обычный файл, количество строк в файле должно быть более 100 тысяч при редактировании (использовать стандартные функции).. Пока противопоставить нечего. Добавлено через 3 минуты и 53 секунды Простите, не понял. К чему сказанное? Ежели оскорбление - смысла не вижу. Если про подпись - обновите страницу. В любом случае, я бы про "по3орность" не заикался. На всем форуме мало кто решит данную проблему! И вообще, любезный, а вы мои проекты видели? Ну не могу я самостоятельно решить как мне файл большой отредактировать. Ну и что? Это для php программиста позор? Это смертельно? )) Извиняюсь, что ушел от темы. Добавлено через 7 минут и 35 секунд
Пардон, так я как раз за этим. Как мне на php отредактировать-изменить или удалить конкретную строку в файле где их мильон? Вопрос не про то: подскажите мне функции file() , fopen(), explode(). Вы меня не совсем поняли. Вопрос как использовать эти функции по отношению к обычному файлу где строки, а к огромному файлу, где их аж на 2 гб, да еще так чтобы php и апач выдержали бы, да еще чтобы ХОТЯ Б за 20 секунд. Вот о чем вопрос-то. |
|||
|
||||
| Ипатьев |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Для программиста, у которого висит во все пузо бляха "я - крутой", позор - писать вот эти слова:
а проекты мне смотреть неинтересно.
ну разумеется. потому что никто, будучи в здравом уме и твердой памяти, не будет этим заниматься вручную, если все за него сделает база данных. поэтому никто и не пишет. не "не могут", а "никому это нафиг не нужно". ой, только не надо вот этого кликушества. не надо путать сложные задачи с дурацкими.
Если студенту дается учебное задание написать базу данных, то сначала ему обычно дают теоретические знания об архитектуре баз данных. Если он, конечно, эти теоретические занятия не прогуливал. Добавлено @ 17:50 Ну вот опять. Налицо все признаки синдрома, который называется нехорошим словом: - нигде не могут полноценно ответить - вы меня не совсем поняли - а вы мои проекты видели? Виноваты все вокруг. Писатели в интернете, собеседники на форуме. Кругом одни посредственности. Которым не дано оценить величие духа истинного гения и грандиозность стоящих перед ним задач. Давайте, что ли, посмотрим ваши проекты, ели вам там хочется. положите на какой-нибудь из них в корень файлик vingrad.htm со словом "Позор неверующим". Это сообщение отредактировал(а) Ипатьев - 3.3.2010, 17:51 |
||||||
|
|||||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Уважаемый Ипатьев, мне бы не хотелось участвовать в Вашем офтопе и набивании постов. Но отчего же эта идея дурацкая? Вы очевидно слишком умны, так уж дабы не опускаться до непримирения, то давайте оставим Вашу любовь к правильности ведения архитектуры баз данных. Не стоит кричать! Базы данных, СУБД, очень хорошо, никто их тут не противится, никто их тем более не отрицает. Вопрос конкретный и не про СУБД. Почему тыкаете носом в сторону них, мне не понятно. Топик не касался SQL ни коим образом. У Вас предвзятое отношение?
Простите за флуд, но у человека какие-то иллюзии и неприязнь. Это не правильно и для меня не приятно. Добавлено через 4 минуты и 17 секунд
Уважаемый, Вам делать нечего? Добавлено через 8 минут и 36 секунд Вам бы сходить на кухню, чай заварить горячий с малиной и лимоном - успокаивает. И не флудить всего что мимо темы. Чем-то Вас обидел, уж извините, не хотел. А оскорблять не стоит. Что касаеться Вашей претензии - то пересмотрите не архитектуру СУБД, а архитектуру этого форума... Форум->Тема->Вопрос->Ответы, и более не путайте топики, и тем более на хамите, если у Вас просто плохое настроение. Прошу прощение у модераторов за офтоп - человек не в духе. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Боже мой ну откуда в голову может придти идея о "набивании постов"?
Неужели это действительно такие важные цифры - количество постов, репутация? Вы правда считаете набивание постов целью всякого, кто сюда пишет? А вы не пробовали читать текст этих постов? Смысл того, что написано? Нет, я понимаю, что с осмысленными аргументами трудно спорить, когда приходится изворачиваться, расказывая сказки про учебные задания. Но набивание-то здесь при чем? А кто говорил слово SQL? послушайте, скажите мне название организации, в которой дают такие учебные занания тем, кто не понимает разницы между словами "SQL" и "база данных". Мы пойдем туда вместе и взорвем к чертовой бабушке это никчемное заведение. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Добавлено через 3 минуты и 13 секунд Ипатьев, Вы попросите администрацию данного форума, может для Вас сделают исключение и поставят чат?.. Что-Почему-Зачем? не слишком ли много? "Гений", "Я- Крутой"? Это Вы вообще о чем? Уже нельзя зайти на форум и спросить у людей помощи в алгоритме? Хочу сказать, Вы слишком чем-то озабочены, не могу только понять чем же. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Я озабочен только одним.
Осмысленностью вопроса, в котором у меня просят помощи. мне кажется, что для человека, просящего других об услуге, не должно являться такой трудностью честно и подробно рассказать о решаемой задаче и событиях, которые привели к именно такой постановке. Не бывает задач в вакууме. Даже учебных. плюс к тому, я не имею привычки, как многие другие посетители этого форума, выдумывать за автора правдоподобные объяяснения. А предпочитаю, чтобы автор хотя бы смог их придумать без подсказки. А когда начинаются басни, то я озабочен тем, чтобы указать автору на их несостоятельность. Все очень просто и логично. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Вы молодец. Редко кто оживлен своей принципиальностью и способен на какой-либо, пускай бессмысленный спор. Оставайтесь идейным - в наше время очень мало таких людей. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Басни? Я не скрываю, что это у меня учебное задание. Даже вопрос возникает: коим образом может повлиять на решение задачи предпосылки ее возникновения; пускай даже если я с потолка взял вопрос и пытаюсь на него найти решение. Вы никогда не занимались самопознанием? ))) прескорбно. Можно подумать, что все ответы на вопросы, описанные реализации у программистов, а тем боле у php-программистов воплощаются в жизнь. К тому же, исходя из старых постов и топов, не касающихся данной темы форума ЛИЧНО У ВАС помощи не просил, боле того: хотел бы, что бы Вы оставляли мои топики в покое. Хамски? Да хамски: не более чем Вы пытаетесь навязать свое мнение. Проследите свои вопросы-ответы по форуму и надеюсь найдете первопричину данной проблематики. Слишком много умных слов и воды, причем в основном попытка навязательства "А вам это ненужно, поскольку не нужно мне". Да, рейтинг и репутация играют не последнюю роль и не только на данном форуме. Думаете нет людей умнее Вас? Я шесть лет занимаюсь только одним php. Мне не надо писать "вы дурак, поскольку себе то и то напридумывали": я далеко в программировании "не мальчик", более того НЕЭТИЧНО так поступать - тем боле что мы с Вами не знакомые люди. Вы все себе позволяете? Насчет басней: да! Я хочу написать Вконтакте на текстах! Более того взять во внимание предложенный алгоритм и продовать его тыщ за писят. Вы довольны? Я уже получил 1 предупреждение на этом форуме, когда хотел указать на правила поведения при ведении постов, указать человеку, что не нужно хамить. Очень грустно, что это не берется во внимание и закрываются глаза на уважение и этику друг к другу. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Модератор: Сообщение скрыто. |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
Добавлено через 1 минуту и 46 секунд Zmiuko, на stackoverflow подсказывают что если уж вы зажаты в рамки поставленной задачи, то можно воспользоваться вызовом стандартных UNIX утилит типа sed. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
smartov, я не согласен с тем, что это "флейм" и "не по делу".
Я подробно описал в скрытом сообщении - почему. У любой задачи может быть множество решений. Выбрать нужное можно только основываясь на анализе исходных данных. Решать же такие заведомо бессмысленные задачи "в лоб" - вот это, как раз, и будет "не по делу". Тут же дыры лезут изо всех щелей - какое предложение ни возьми. что, например, должна означать фраза ? что должны выдержать апач и пхп? При нужных параметрах процесс будет висеть до завершения перезаписи. Но какой в этом смысл? И так с каждым объяснением автора. Вместо того. чтобы перебирать их по одному, я сразу указываю на корень проблемы - негодно сформулированнюу задачу. Добавлено @ 20:44 Приведенное вами решение не удовлетворяет поставленным условиям - делать обязательно на РНР и размер файла по приведенной ссылке гораздо скромнее - в 1000 раз. Это сообщение отредактировал(а) Ипатьев - 3.3.2010, 20:50 |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Благодарю, очень доброе решение. Правда иногда не вполне осуществимо, но это малое что из реально продуманных ответов на поставленую задачу. Любой программист, даже далеко не веб, должен иметь понятие не столько об используемый командах в интерпретаторе (поскольку справку всегда можно прочесть), сколько в известных ошибках выдаваемыми используемым продуктом. Не думаю, что Вы не поняли о каких именно ошибках и проблемах шла речь. Если действительно в недоумении, то создайте файл в миллион строк и попробуйте вывести постранично строки (пять строк на страницу к примеру), дабы понять какая ошибка выведет сам апач, то думаю вам дополнительно необходимо к каждой строке применить строковые функции, либо к каждой, либо как к массиву. В первом случае себя покажет интерпретатор, а во втором сам апач. Думаю, с постановкой данной задачи справитесь. |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
Zmiuko, для записи http://ua.php.net/manual/en/function.fwrite.php
?? Это сообщение отредактировал(а) gcc - 4.3.2010, 08:36 |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
На мой взгляд такая задача - бред в кубе. Я сделаю insert into .... а потом select * where ... а потом ещё что нить и это займёт ~ 0.0002 секунды. Что за изобретения - мне непонятно. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
||||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Zmiuko, один раз распарсить в бд и юзать на здоровье.
|
|||
|
||||
| sTa1kEr |
|
||||||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Это очень вредные подсказки, которые создают у новичков иллюзию, что системные утилиты используют какие-то магические методы. В то время, когда все эти утилиты используют все те-же базовые алгоритмы. И тот же посоветованный sed здесь не исключение. Для редактирования файла он все так же читает его целиком поблочно и так же целиком записывает в новый временный файл. Впрочем, что бы в этом убедится самим и наглядно увидеть алгоритм работы sed'а можно провести небольшой тест: Создадим текстовый файл с 1 000 000 строк
И при помощи утилиты strace посмотрим как sed будет его редактировать:
Теперь смотрим, что у нас получилось :
Вот и вся магия системных утилит. Zmiuko, надеюсь на этом примере вам ясен алгоритм редактирования любого файла в общем случае? Если нет, то попробуйте к методам приведенным выше добавить в начало букву f. И еще стоит заметить, что существует частный случай, когда все строки имеют фиксированную длину (т.е. когда длина любой строки остается неизменной). В этом случае вам не придется читать и перезаписывать весь файл. Алгоритмы, как это сделать, хорошо описаны в документации к PHP (ссылки вам привел Fortop во втором посте) Это сообщение отредактировал(а) sTa1kEr - 4.3.2010, 15:49 |
||||||||
|
|||||||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
||||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
sTa1kEr, благодарю, вы очень популярно и качественно объяснили суть алгоритма. Одновременно и показали и рассказали. Благодарю. очевидно я был прав, что при редактированнии большого файла, необходимо производить изменение сегментарно и формировать кеш перезаписи, благодарю.
IgorIV, gif-анимация довольно сложна, прошу прощения что не могу уделить вам по ней времени, а вот округление углов - скрипт довольно прост:
Надеюсь, что модератор не рассердиться. |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
Откровенно говоря я тоже ожидал от СЕДа более интеллектуального поведения вроде перезаписывания только изменившихся блоков файла. |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
Zmiuko, в условии задания говорится что данные строки отсортированные или упорядоченные? если нет, то задание не реально простое, или не реально сложное (реляционная алгебра и т.д.
вы говорите у вас файл более 1 Гига, но например, если таблица или база будет 50-150Гб, разве MySQL будет весь файл перезаписывать для того чтобы вставить, обновить или удалить? Это сообщение отредактировал(а) gcc - 5.3.2010, 10:58 |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
будет, конечно.
только не сразу. |
|||
|
||||
| Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Омг, а разве это вообще проблема?
И каким боком это должно быть реализовано? В случае если замещаемый блок неравноразмерен с новым - ничего не получится. Zmiuko, рекомендую перечитать вот это
Тут предложены два единственно возможных варианта. Произвольный файл будет требовать полной перезаписи. Обойти это можно только лишь структурировав файл - например, ограничив длину строки 1000 символами ровно (даже если в ней лежит ровно 1на буква она будет занимать строку в 1000 байт). Большинство СУБД используют 2й вариант, естественно в более сложной форме. -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
| LeoK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 14.12.2007 Где: Moscow Репутация: нет Всего: нет |
а шелл бы был здесь как нельзя кстати
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Fortop, с появлением полей типа TEXT и varchar второй вариант уже не актуален
Выравнивание ведь не единственное средство обеспечения произвольного доступа. хотя и наиболее доступное Добавлено @ 15:29 LeoK, слово "здесь" к данной ситуации неприменимо. Поскольку четкое позиционирование отсутствует. так что задача может быть как "здесь", так и "где-то там" или вообще "нигде". Ближе всего к описанной задаче подходит "изобрести на коленке базу данных", о чем я уже давно и говорил, и к чему постепенно движется обсуждение. но в этом случае шелл, конечно, нужен, но гибче будет, все-таки, руками. Это сообщение отредактировал(а) Ипатьев - 5.3.2010, 15:31 |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Разве? Все сделано несколько более интеллектуальным, метаинформация хранится для записей(строк) поэтому они могут быть переменной длины. Но тем не менее по-прежнему выделяются страницы/блоки (фиксированного размера) для хранения записей. Во многих серверах блобы(поля типа TEXT) вообще хранятся в отдельных областях. Но это именно структурирование хранимой информации. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Я так же как и Вы склоняюсь к тому, что данное задание практически не реализовать. Черт ногу сломит. Выход можно найти, наверное еще, если использовать не целостный файл под все строки, а каждую строку складировать в файл. И иметь файл единый для атрибутов строк, допустим id<>имя файла строки но вот что если его также раздует, а его и раздует. Тоже не выход.
Полагаю необходимо находить какой-то иной алгоритм, допустим файл создается до определенного размера, затем после его заполнения создается второй, третий и так далее. но скрипт редактирования подобного хлама, будет неимоверно сложен и излишне, я бы сказал, негибок. Хотя это один из выходов. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Zmiuko,
еще раз... Прежде чем решать задачу, нужно ее понять. Если задача редактировать большой файл, это один вопрос (но резать его на 1000 маленьких - неполучится). Если задача создать СУБД - то это совсем другой вопрос. Поэтому надо не выдумывать, а взять и посмотреть в тетрадь с заданием, если конечно, все что тут говорилось про учебность не полное вранье. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Допустим надо будет отредактировать строку. Получается мы пробегаем по файлам - ее находим. Тут все понятно. Редактирование тоже понятно. Ну а вот удаление строки в середине - ставит меня в тупик. Это я про то, что если создавать не один большой файл, а множество с одинаковыми размерами - то есть не с одинаковыми, а записанными до указанного размера, естественно будут они отличаться и по размеру и по количеству строк. Получается - находим тот файл где строка, удаляем ее из него - и опля... надо переворотить всю базу - в каждом файле произвести смещение на -1 до указанного файла, в котором удалили строку. И опять тупик - если файлов, к примеру тысяча.
|
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Я оговаривал суть задания. Необходимо разрешить чтение-удаление-редактирования строк или строки в файле большого размера (более ста тысяч объемных строк, файл более 300мб-1гб). В дебри лезу, что пытаюсь, может быть построить некоторую архитектуру разбиения файла и дальнейшей работы с ним. Выхода другого не вижу. Если Вам интересно, то такие задания дают в НГТУ - Новосибирском гос.техническом университете. Добавлено через 1 минуту и 16 секунд Простите, решить необходимо на php используя стандартные функции. Естественно без применения СУБД. Так бы я давно файл засунул в мускул да работал там. Добавлено через 1 минуту и 27 секунд И вам бы голову не морочил Добавлено через 3 минуты и 9 секунд Увы, я не имею представления как уже ее понимать и выкручиваться из данной ситуации. Добавлено через 5 минут и 7 секунд С базами данных на текстах, работал, знаю прекрасно какое это гомно и отсутствие всякой гибкости, лишь головная боль. Но вот дали мне такое задание. Что уж теперь. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Fortop, тут вся хитрость в том, что на самом-то деле в СУБД поиск по номеру строки мало того что почти не бывает нужен, а еще и идеологически вреден. Отсюда у нас растут другие средства. Побочным эффектом применения которых является отсутствие необходимости вырванивать файл. ;)
|
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Мда. А подойти к преподавателю сложно? Взять и уточнить, какой из 2х вариантов реализовывать. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
А вот еще мысль пришла, читать файл, как предложено было ранее в своеобразный temp, а удаление-редактирование проводить посредством кеширования запросов. То есть удалили-отредактировали строку - ничего с фалом не делаем, а просто создаем новый, где указываем что удалили либо как отредактировали. Далее просто читаем файл для вывода заного, а в цикле чтения открываем второй файл и просто заменяем визуально все проводимые изменения. Выход?
Добавлено через 40 секунд
Там ответ простой: у Вас есть голова? Думайте!.. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
ого, сколько уже успели понаписать.
однако, автор уже ближе к тому, чтобы изобрести эти самые средства но при этом он уже противоречит изначальной постановке задачи. у нас уже не "файл", а "массив данных" без строго определенной формы - если говорить ормальным языком. Вот к чему приводит скрытность, граничащая с издевательством - сначала долго рассказывать про файл, зсаставлять людей тратить время на составление и отладку примеров - а потом вдруг сказать, что файл большой и не нужен. И даже после этого точный текст задания все равно остается засекречен |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Ипатьев, ? Причем тут поиск записей?
Я все же пока еще верю, что ТС решает задачу именно "редактирования" файла, а не написания собственной СУБД. Добавлено через 49 секунд Тогда выбираешь первый понравившийся и реализуешь его. В чем сложность? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Стоп! Стоп! Не ерничать! никто вам не чего не засекречивал. Я имел ввиду заранее делить этот файл, дальше с кусками работать! Добавлено через 47 секунд Нужна была бы СУБД, я бы уж выход нашел... TXTSQL, к примеру взять во внимание. Добавлено через 8 минут и 1 секунду да думал, есть какие-то оптимальные решения.. а все достаточно просто, делить да складывать обратно... Для себя ответ нашел в нерентабельности редактирования большущего файла на php - стоит осуществлять посредством модулей и сторонних процессов. Сделать-то конечно сделаю, вариантов уже описано множество, благодарю Вас за Ваше терпение Ипатьев и тебя благодарю, хоть ты сворливый и вредный, позже все-таки персонально для тебя создам тему о создании собственной СУБД! Добавлено через 10 минут и 24 секунды А всеж вы правы в чем-то. Если производить дележку файла - то далее вся работа с ним похожа на работу СУБД. Вот только складывать обратно потом надо. Хотя можно просто циклом "подбирать куски". |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Fortop, ну, мы ушли немного в сторону, к архитектуре БД.
О ней я и писал, о том, что вариант 2 не так уж и нужен в современных СУБД. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Что касается работы огромного файла, кстати, то сталкивался с проблемой работы с *.xls - php наотрез отказывался обрабатывать 9 мегабайтный файл.
Добавлено через 1 минуту и 16 секунд И задание было схожее - произвести по нему поиск и выдать результат в виде *.xml . Ну как сами понимаете - интернет магазин. Добавлено через 4 минуты и 45 секунд Так вот проблема была в том, что содержимое *xls по-идее надо было в SQL-базу загрузить. Но Ваш покорный слуга делал шиворот-на-выворот, "на лету" обрабатывал *.xls в *.xml-вариант, а уж потом складывал его в базу. Ну и php, наотрез отказывался до конца обрабатывать этот *.xls . |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Ипатьев,
Чтобы не было недоразумений - вариант 2 это не ограничение длины записи, а структурирование информации, в том числе и при помощи дополнительной метаинформации (индексы, страницы, ссылки и т.д.) Ограничение длины строки - это всего лишь палиатив предложенный в данном конкретном случае для ТС.
Если резать файл, то ничего складывать не надо. 1 строка - 1 файл. Только следует понимать, что в данном случае мы работаем не с файлом, а массивом данных(информации) размещенным в множестве файлов. Если в учебном задании написано "редактировать файл" то придется работать именно с одним файлом. Все редактирование которого будет сводиться к построчной перезаписи в новый файл. Или в случае строк фиксированной длины - перезаписи одной единственной строки в самом файле при помощи функций, что я давал в самом начале топика. Это сообщение отредактировал(а) Fortop - 5.3.2010, 16:27 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Если в PHP программисты большое внимания уделили чтении-записи файла, таких проблем бы точно не было.
Добавлено через 19 секунд Имею ввиду про его создателей. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Zmiuko, никаких проблем с чтением/записью файлов нет.
Есть проблемы отсутствия знаний. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
ну вот опять эта нехорошая черта, считать всех вокруг дураками. при том, что эти средства к пхп отношения не имеют, а предоставлены операционной системой и - главное - этими же самыми средставми пользуются все остальные. и не жужжат. а нашему непризнанному гению средства мешают |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
||||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
IgorIV, формально ваши слоа можно оспорить.
библиотека, входящая в состав РНР и сторонняя программа (демон) - это, все-таки, разные вещи на самом-то деле проблема совсем не в чистоте средств. |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Блин, облажался
Это должно было выглядеть так:
Ипатьев, формально? Ну да, формально на PHP можно что-то нарисовать, только для этого надо использовать сторонние модули. В данном случае ТС использовал GD. Так же формально можно редактировать и гигабайтные файлы, используя те же сторонние модули. В данном случае я использовал mysql. Пока не вижу кардинальных различий. Придратся к мелочам конечно можно ... |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
GD сложно считать "сторонним модулем"
imagecreatefromstring - это функция РНР точно так же, как и mysql_query которая одна, сама по себе, работать не будет |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Модератор: Давайте вернёмся к теме обсуждения.
|
|||
|
||||
| gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
Zmiuko,
если строка value фиксированная 1000 байт
если надо удалить строку строка_55555556 нужно найти ее позицию, и нужно записать fwrite -1000 "с минус" и оно должно удалить с конца строки...
оставить для индекса строка_55555556 на всякий случай Это сообщение отредактировал(а) gcc - 5.3.2010, 22:25 |
||||
|
|||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
gcc,
Я вот читаю периодически Ваши советы и просто не могу понять о чем они? И главное зачем? Какой индекс строки? Что Вы хотите искать в файле с равноразмерными строками? Зачем это что-то искать? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Fortop, чтобы удалить, например
|
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
Fortop, разве строки могут быть не упорядоченными? (посмотрите первую страницу, у него по-моиму сортированные строки, он не говорит)
если создать файлик 1Гиг-40Гиг и если каждую строку сравнить с какой нибудь строкой? сколько это займет времени и сколько ресурсов? а если они будут упорядоченными, то будет легче и(или) на много быстрее... Это сообщение отредактировал(а) gcc - 6.3.2010, 00:27 |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Что значит неупорядоченные строки? Вот в моем сообщении сейчас строки упорядочены? Или нет? Цитату не сложно оттуда? А то мое зрение меня подводит. Откуда вообще выплыла сортировка?
Поздравляю, вы открыли для себя индексы. Теперь стоит еще подумать о том, что и по чем собираетесь сортировать. Гм, а для редактирования не нужно знать что редактируешь? Вставка/Удаление в любом случае потребуют полной перезаписи файла (если это файл, а не БД) Но вопрос в другом. ТС хотел обращаться к строке по ее номеру. И в случае фиксированной длины нахождение строки делается одним оператором fseek(номер строки * длина). Все. Кстати формат DBF весьма познавателен в плане того как организовать отложенное физическое удаление, но это будет далеко не просто файл. В случае строк произвольной длины, не имея метаинформации, мы будем бежать по всему файлу и считать строки - это без вариантов. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
об этом и речь. сначала узнать, что хочешь удалить потом - найти потом - удалить. без среднего пункта, по-моему, не получится вообще, спорить о том, что имел в виду автор, или о значениях слова "поиск" (fseek, например, происходит от слова "искать") - занятие неблагодарное. я завязываю. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Вот спорят-то
Заранее имелось ввиду, что в файле строки не фиксированнной длины. Но склоняюсь к способу предложенному Fortopом, можно к концу каждой строки прибавить нулевые байты. Делаем лишнее действие, теряем время, и вообще можно поспорить о нужности, но редактировать способом Fortopа действительно легче. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Как я уже ему говорил, этот способ в современных СУБД практически не применяется.
Потому что по номеру строки никто никогда к ней не обращается. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
||||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
У нас субд.
чтобы это понять, надо либо обладать знаниями, либо реализовать всю идею на практике, вместо разглагольствований на форуме. |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
||||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
-------------------- Amazing |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |