![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| 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) вообще хранятся в отдельных областях. Но это именно структурирование хранимой информации. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]()
|
| Правила форума "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. |