![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
Спасибо, уже кое-что...
А что в ПХП нет стандартной функции построчной рабоиты с файлами
Нужен... Раскидать то легче, но скорость будет меньше - проверено на практике + нужно постоянно бекапить, я не представляю как бекапить БД (учитывая что бекап - прога на Дельфях, работающая на другом компе...) Жду еще ответов. Может все же можно производить построчные запись/удаление -------------------- SEO-мастер |
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
Secandr я уже писал что нужно чтоб все было построчно.
Представь что надо прочесть 142536-ю строку - при твоем варианте это гораздо сложнее и дольше реализовываться... хотя тоже вариант... -------------------- SEO-мастер |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
В моем примере я предложил две структуры файла:
1)файл содержащий элементы с фиксированной длиной - файл смещений 2)файл содержащий элементы с переменной длиной - файл данных Если тебе нужно хранить текст, то лучше реализовать схему смещения->данные. Иначе, если тебе не жалко дополнить строку пробелами, что бы у всех строк была одинаковая длина, лучше сделать файл с элементами с фиксированной длиной. Подход смещения->данные позволяет работать с размерами файлов в сотни мегабайт. Запись более длинной строки в середине файла невозможна, т.к. нет места. Варианты: 1)записывать строку в конец файла данных и редактировать смещение. Именно смещение отвечает за порядковый номер строки, а данные раскиданны в любом порядке по файлу данных. 2)делить строку -> очень гиморно -> очень медлено на PHP -> не стоит Проблема это мусор в файле данных, кототый нужно регулярно вычищать. Заключение: все эти способы нужны для ОДНОЙ ЦЕЛИ - узнать расположение требуемой строки! Если ты знаешь ГДЕ находится строка, то ничто не мешает тебе переписать ее.
Нет таких функций, разве только file() для чтения всего файла. И главное: нельзя переписать n-ую строку если у нее длина отличная от оригинальной, так как тебе нужно будет переписать заного остальную часть файла - риск потерять данные. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
мдя... я знаю номер строки, знаю ее длину... как нично не мешает ЛЮДИ!!! ВЫ ЧТО ИЗДЕВАЕТЕСЬ НИЧТО НЕ МЕШАЕТ, НИЧТО НЕ МЕШАЕТ СКОЛЬКО МНЕ ЕЩЕ СПРАШИВАТЬ КАК ЭТО СДЕЛАТЬ РАЗ НИЧТО НЕ МЕШАЕТ, КАК -------------------- SEO-мастер |
|||
|
||||
| PROme |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
Secandr что-то я в начале не заметил твой пост
что ж, довольно интересно, напомню
вот, только
не проходит почемуто ЗЫ: режим, наверное, надо юзать w+ [добавлю еще чуток] $bytes (длина цифры в файле) определяется верно, но вот, почему не хочет смещать указатель хотя, ИМХО, наскока я понимаю надо в данном месте длину не елемента, а от начала файла... но все равно, ведь и так какого-то не пахает да, а @ применяется для чего? а то забыл... подавляет вывод о ошибках или че Это сообщение отредактировал(а) PROme - 22.1.2004, 17:28 -------------------- SEO-мастер |
||||
|
|||||
| ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
off
На Perl это все делается гораздо проще -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
PROme Смысл в том что я просто выкинул разделители из примера приведённого Sardar`om выше.
@ применяется для именно для подавления ошибок. |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
Зачем нужен MySQL, вы, конечно, не задумывались.
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| PROme |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
я тоже уже задусывался про это... перловку ваще плохо знаю, не приведешь примерчик?
а то что топик нужно читать с начала это не для тебя -------------------- SEO-мастер |
||||
|
|||||
| arial |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
А то, что пректы изначально надо писать по человечески, это не для тебя -------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
||||
|
|||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
блин, ты че тормозишь читал топик файл может быть очень увесистым - 100 и более метров каждый элемент - 1..3 символа вдлину прикинь как это все в БД будет... а + бекап мутить с Win машины... в общем ты так и не прочитал топик - сервер грузнит с БД - тестировалось люди!!! помогите с Perl!!! -------------------- SEO-мастер |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
С файлами ты грузанеш систему не меньше, а база заточена под такие запросы. Это сообщение отредактировал(а) arial - 22.1.2004, 21:14 -------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| Sardar |
|
||||||||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Елы-палы... Благо теперь знаем примерные размеры файла и что ты там будешь хранить. Попробую обьяснить на пальцах.
Прозвучал ответ: узнаем где лежит элемент(смещение) - длина_елемента*порядковый_номер, сдвигаем указатель в файле, пишем. Только все элементы должны иметь длинну в 3 байта(устал обьяснять почему).
Скажи что за ошибка была. Писал на лету в текстовое окошко без подсветки, сорри опечатался ;) if(!fseek($fp,$bytes,SEEK_SET)) break;
PROme или ты не внимательно читаешь что мы тут пишем, или мы не успеваем за твоими мыслями
У тебя вообще-то отдельный файл должен быть со смещениями... но по моему зря я это напостил. Ты меня попутал со строками Устал уже отвечать в эту тему, PROme читай внимательно что тебе запостили с самого начала. Arial
Это спорное утверждение Это сообщение отредактировал(а) Sardar - 22.1.2004, 21:37 -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||||||||
|
|||||||||||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
блин, запутали меня уже окончательно...
значит ни на ПХП ни на Перле писать, отталкиваясь тока от порядкового номера строки нельзя
код вставлял с твоей меесаги НО хоть я юзаю тока блокнот, скобку заметил сразу т.е. дело не в ней - он попросту не хочет выполнять перемещение указателя... тут я уже совсем начал задумываться о смысле жизни... arial может с 3-го раза поймешь база заточне под много небольших запросов но эта туча мошкары садит ее на нет моментально к тому же как ты будишь на дельфях выполнять экспорт базы с сервера на Вин платформу с возможностью восстановления в общем если кто еще чего надумает - жду недождусь услышать... а пока буду пробывать вариант с полной перезаписью... блин, де мой пистолет -------------------- SEO-мастер |
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
посидел с пол часика и сгенерил следующие:
к стати, массив из 200 000 елементов обрабатывает в мгновение ока... ну ладно у меня вопросы: - насколько это ефиктивный метод? как можно улучшить? - скорее проблема - при многочисленой переписи файла, накапливается много квадратиков (это, я так понял, символы окончания строки в Юниксе или де там...) так будут ли они на сервере Это сообщение отредактировал(а) PROme - 22.1.2004, 22:48 -------------------- SEO-мастер |
|||
|
||||
![]()
|
| Правила форума "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. |