За последние 24 часа нас посетили 18595 программистов и 1665 роботов. Сейчас ищут 943 программиста ...

Надежность функций записи в файл

Тема в разделе "Прочие вопросы по PHP", создана пользователем freeneutron, 31 май 2012.

  1. freeneutron

    freeneutron Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    226
    Симпатии:
    3
    Скажите пожалуйста, кто в курсе. Функции записи в файл: file_put_contents, fwrite и fputcsv проверяют ли корректность записи данных и повторяют ли попытку записи если в результате первой попытки данные записались неправильно?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    этим ОС занимается.

    Имхо можно поймать момент, когда всё "записалось", но еще не записалось на хард и дернуть шнур =)
     
  3. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Но функции возвращают кол-во байт записанных если вернет ноль просто можно заново записать попробовать...
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    в php функции ввода-вывода при ошибке обычно возвращают либо 0 либо false + генерируют warning. это можно контролировать.
    вопрос с недо-сохраненным буфером должен решать flush|fflush. "записались неправильно" это из области сферических коней в вакууме.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Не. ну может конечно. Просто компы родились ради того, чтобы записывать и копировать без ошибок. Потому и пиратство.

    Но энтропия может только прибывать.
     
  6. freeneutron

    freeneutron Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    226
    Симпатии:
    3
    В общем этот вопрос у меня возник в связи с тем, что всегда есть вероятность записать на носитель информации, в определенный адрес одно содержимое, а прочитать потом совсем другое. Это было особенно актуально во времена дискет. Для жестких дисков это не актуально. Но все же спокойнее спиться, когда знаешь, что используемые тобой функции работают так, как тебе нужно. Еще один факт подтолкнувший меня к данному вопросу состоит в том, что время выполнения функции file_put_contents примерно в 4 раза больше времени выполнения file_get_contents (при использовании NFTS и 32-х байт информации для записи и считывания). Возможно, что дополнительное время тратится на проверочное считывание записанной информации, а возможно - на что-то другое. В последнем я как раз и хотел удостовериться, из каких именно элементарных операций состоит функция записи на диск...
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Никакого проверочного считывания автоматом никогда не производится.

    Добавлено спустя 1 минуту 36 секунд:
    Можешь писать чексуммы если так прям всё серьёзно
     
  8. freeneutron

    freeneutron Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    226
    Симпатии:
    3
    Нет. Для полной надежности надо записать данные, потом их же считать и проверить, совпадают ли считанные данные с исходными. Но не будет ли это лишней (дублирующейся) работой?
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у тебя там что? ядерная подводная лодка на пхп?
     
  10. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    есть какая-то контора, они сажают китайцев, и те каптчи вручную разгадывают и обратно отсылают текст каптчи....

    для полной уверенности, можно им отправлять файл после записи, они прочитают и вернут обратно....ну и потом сравнивать с исходником....

    ваще если подумать, вариантов масса )))
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    :-D
    Можно ещё собственного узбека нанять, научить, чтобы открывал в блокноте каждый изменённый файл и просматривал содержимое. И чтобы автомат ему список файлов для проверки составлял
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я вижу единственное решение - рейд