[PHP] Нересурсоёмкая множественная запись текста в файл

Discussion in 'PHP' started by Kuzya, 30 Mar 2010.

  1. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Здравствуйте. Есть у меня код который должен выполнять ~1500 "лёгковесных" (для железа) операций. Запускается он на очень слабом компьютере - 250 МГц, 128Mb RAM. Для большего контроля над его выполнением мне захотелось сделать логирование - после каждой операции заносить сообщение с некоторой информацией в лог-файл. Причём нельзя сделать так, чтоб лог открывать в начале работы и сохранять только в конце. Нужно сохранять изменения именно после прохождения каждой операции, что в случае сбоя сервера я смог увидеть на каком именно шаге была остановлена работа. Получается что за всю работу скрипта, должно быть выполнено ~1500 отдельных записей в лог.
    Как это лучше делать не таком железе? Через file_put_contents или fopen/fwrite/fclose? Может вообще переложить это на ОС выполняя каждый раз
    ? Или, быть может, есть ещё какие-то варианты?
     
  2. ZagZag

    ZagZag Elder - Старейшина

    Joined:
    22 Feb 2007
    Messages:
    149
    Likes Received:
    22
    Reputations:
    1
    Еще несколько вариантов:
    1. Использовать для хранения логов какую-нибудь легковесную БД
    2. Использовать временное хранение логов в памяти и сохранять в лог каждую минуту (или чаще)
    3. Бредовый вариант: сохранять каждую запись в отдельный файл и папку названную по времени
     
  3. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    Я щитаю, fwrite из предложенного буде самым то

    1, Я не думаю, что БД на таком железе будет лучшим вариантом
    2. Вариант окейный - аля кеширование - но тСу надо за всеми изменениями следить - останвока сервака может и не попасть точно в минуту ;)
    3. Вообще бред, так мучать старушку-комп, полторы тысячи файлов - это круто :)
     
  4. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    ZagZag, спасибо, но:
    1. Как сказал wildshaman, БД на таком железе не лучший вариант. Всётаки мне кажется что помещение записи даже в SQLite будет медленнее чем тоже самое но в текстовый файл.
    2. Здесь тоже сокласен с wildshaman.
    3. А зачем такие сложности? Мне кажется это ничего не даст.
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kuzya Если требуется просто добавление строки в конец файла - то не принципиально какой вариант вы выберете.

    И не надо, для сброса кэшированных данных на диск существует fflush();
     
    _________________________