PHP: запись в файл vs база данных

202
03 августа 2018, 09:00

Есть простенькая гостевая книга: в форме обратной связи 2 поля (имя и комментарий), аяксом данные отправляются на сервер и обратно выводятся на этой же странице.

С базой данных для такой задачи решил не заморачиваться и реализовал запись в файл и чтение из него:

$name = $_POST['name'];
$text = $_POST['text'];
if($name && $text) {
    $filename = 'file.txt';
    $content = file_get_contents($filename);
    $html = '<p><b>'.$name.'</b></p><p>'.$text.'</p><br />'.$content;
    file_put_contents($filename, $html, LOCK_EX);
    $content = file_get_contents($filename);
    echo $content;
}

Но есть некоторые сомнения относительно того, насколько корректно это будет работать. Прошу совета опытных разработчиков: какие есть риски в такой реализации? Можно ли положиться на такой вариант или всё-таки создавать базу, туда всё писать, оттуда выводить и т.д.?

Answer 1

Для принятия решения необходимо найти опасные моменты.

Если, для записи в файл необходимо пройти проверку на робота, то записей будет немного. Чтение осуществляется с общего файла, открытий тоже будет не много. Выходит что опасности для DDOS тут нет. Возможно, что это решение будет работать даже быстрее чем с базой.

Но вот сама по себе гостевая требует оперативной проверки, лучше премодерации иначе легко попасть в черный список Роскомнадзора.

Answer 2

Если используете "слабый" хостинг, который сильно ограничивает. То это выход, в противном случае лучше реализовывать с использованием БД.

Плюсы подхода:

  • Не нужна БД
  • Относительно малое количество кода

Минусы:

  • Невозможно параллельно писать отзывы
  • Большая вероятность что работает медленнее (нужен тест)
  • Необходимость создания парсера для выборки данных из файла
  • Не безопасно
  • Не сработает при использовании "свежего" фреймворка например Laravel 5 (но в джумле работать точно будет)

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

READ ALSO
Как будет выглядеть аналог функции на D7?

Как будет выглядеть аналог функции на D7?

Как переписать сию конструкцию на D7? Не судите строго, Битрикс осваиваю только

186
Замена кавычек на елочки

Замена кавычек на елочки

Ребят есть ли регулярка заменяющая при выводе кавычки на елочки? Допустим в бд у меня есть запись "Тест" при выводе ее на сайте сменить кавычки...

241
Помогите непонятный PHP код return($var &amp; 1);

Помогите непонятный PHP код return($var & 1);

Изучаю PHP функцию array_filter, на сайте w3school наткнулся на непонятный код,

169