ФорумПрограммированиеPHP для идиотов → Работа с файлами

Работа с файлами

  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 21 февраля 2010 г. 1:56

    Необходимо хранить данные в файлах… Ни разу в таком контексте с ними не работал.
    Идея такая: при добавлении поста/cтатьи/новости сериализовать массив с контентом и информацией и записывать в начало файла строку.
    кстати, а как посчитать к пример 5 строк, ведь считает всё до конца?
    а как считать с определенной строки по определенную строку?

    И так же сериализовать массив с данными о странице. например тег тайтл, описание.
    Я в правильном направлении думаю?
    Спустя 295 сек.
    не поосчитать а считать(считывать)
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 21 февраля 2010 г. 4:17, спустя 2 часа 21 минуту 39 секунд

    как то так

    file_put_contents('data.txt',serialize($data));
    $data=unserialize(file_get_contents('data.txt'));

  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 21 февраля 2010 г. 4:26, спустя 9 минут 14 секунд

    soulgarden, не парься. не знаю что там для тебя "строка", записывай каждый кусок данных в отдельный файл.
    ιιlllιlllι унц-унц
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 21 февраля 2010 г. 4:36, спустя 10 минут


    кстати, а как посчитать к пример 5 строк, ведь считает всё до конца?
    а как считать с определенной строки по определенную строку?
    Ты сначала озаботься вопросом, что будет если несколько пользователей будут добавлять посты одновременно.
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 21 февраля 2010 г. 4:47, спустя 10 минут 45 секунд

    Alexb, Озаботился, не добавят. :)

    Artoodetoo Строка - это сериализованный 1 пост. построчно считывать, то есть по посту. рассериализовывать и выводить.

    Faster, Я прекрасно знаю как это делается, не о том спрашивал.

    <quote>
    кстати, а как считать к пример 5 строк, ведь считывает всё до конца?
    а как считать с определенной строки по определенную строку?
    </quote>
    Вот на этот вопрос ответьте
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 21 февраля 2010 г. 4:57, спустя 10 минут 9 секунд


    кстати, а как считать к пример 5 строк, ведь считывает всё до конца?
    Почему до конца? fread читате столько байт, сколько попросишь.
    Еще есть такое понятие, как файлы отображенные в память, но как это подружить с php не в курсе, гугли, вот в GUI прогах это активно используется.


    а как считать с определенной строки по определенную строку?
    Ну есть такая вещь fseek. Но если бы такая дурацкая задача встала (хоть убей не пойму, зачем хранить данные в файлах), я бы сделал бы какую-нибудь обертку  -  писал бы прямо в файл php код и работал бы с массивами, другой вариант XML и XPath запросы.
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 21 февраля 2010 г. 5:01, спустя 3 минуты 35 секунд

    1)так откуда я знаю сколько байт будет в строке. не подходит. то же касается fseek()

    2) просто моя цмс должна работать на файлах, поэтому нужны файлы.
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 21 февраля 2010 г. 5:45, спустя 43 минуты 42 секунды


    1)так откуда я знаю сколько байт будет в строке. не подходит. то же касается fseek()
    А ты должен формат файла разработать. Простейший формат -сколько-то байт отводится на заголовок файла. В заголовке прописываются смещения данных.


    2) просто моя цмс должна работать на файлах, поэтому нужны файлы.
    Я не спрашил что должно быть. Я спрашивал: "Зачем?". Например, яндекс хранит свой центальный индекс в бинарных файлах, а не SQL базе. Но они точно знают зачем - потому что не одна существующая СУБД не обеспечивает требуемой им производительности.
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 21 февраля 2010 г. 6:38, спустя 53 минуты 50 секунд

    Индекный файл заведи, в котором будешь хранить в бинарном виде смещение относительно начала файла и длину строки, но тут возникает замечательная возможность испытать на себе все прелести изварённого секса с фрагментацией данных, поддержкой индексов в актуальном состоянии, локом строк для изменения и другими интересными задачами, которые уже реализованы в СУБД =)
    Короче, не мучайся и храни все в отдельных файлах.
    Work, buy, consume, die

Пожалуйста, авторизуйтесь, чтобы написать комментарий!