СКРИПТЫ
ТЕГИ:
php (282)
js (144)
html (132)
css (99)
html tags (58)
jquery (39)
edit text (37)
php array (30)
form html (29)
fonts (22)
foto (21)
forum (19)
ruweb.net (19)
atom (19)
html book (17)
board (17)
Показать еще :
php file (16)
js method (16)
hosting (16)
svg (16)
link (15)
htaccess (13)
osclass (13)
color (13)
table (12)
path (12)
php date (11)
online (11)
yandex (11)
js delete (11)
icon (11)
jsphp (11)
input (11)
notepad (11)
form (10)
php img (10)
url (10)
mouse (9)
info (9)
img (7)
cookie (7)
comment (7)
task (7)
ftp (7)
php url (7)
dosite (6)
click (6)
hover (6)
js url (6)
reg.ru (5)
chart (5)
php get (5)
adminka (5)
value (5)
mb (5)
js id (4)
bbcode (4)
submit (4)
js form (4)
browser (4)
select (4)
search (4)
js copy (4)
iframe (4)
symbols (4)
captcha (3)
https (3)
js post (3)
vk (3)
scandir (3)
js time (3)
ssl (3)
vs code (3)
height (2)
details (2)
youtube (2)
tag hr (2)
sitemap (2)
title (2)
ukoz (2)
cursor (2)
console (2)
seo (2)
js vars (2)
video (2)
smile (1)
windows (1)
numbers (1)
archive (1)
header (1)
books (1)
domen (1)
padding (1)

Использование файлов вместо баз данных.

Файл или база данных, база данных в файле .dat. О чем пойдет речь на странице? Я расскажу свой опыт ведения сайта на файлах. И сделаем очередной живой пример и скрипт, который вы сможеет использовать у себя на сайте!

И да! Наш сайт на 100% сделан на файлах!

Файл ".dat" вместо базы данных.

  1. "База данных" или база данных на файле?
  2. Авторский сайт на файлах или на базе данных?
  3. Основные параметры базы данных в файле.
    1. Файл + ассоциативный массив.
    2. Видео: база данных в файле.
    3. Файл + ассоциативный массив.
    4. Как и что, будем хранить данные в файле .dat
    5. Как будем записывать и получать данные из файла
    6. Форма ввода для записи в файл .dat
  4. Предыдущий вариант(построчно.)

  5. О моей системе хранения данных.
    1. Файл dat вместо базы данных.
    2. Раскладываем данные в переменные.
    3. Итого :

  1. "База данных" или база данных на файле?

    Что выбрать для своего сайта - базу данных или файл? ...
    Когда вы только начинайте изучать "сайтостроение", то возникает вопрос, что же выбрать для своего сайта, "базу данных или файл".

    Вообще, что такое база данных!? Это, по сути, те же файлы. Ведь физически они где-то храниться должны.

    А кроме файлов, физической оболочки просто не существует! Как бы странно это ни звучало!

    Только отличие файла от базы данных в способе обработки!
    Кроме того!

    Существуют базы данных, которые и позиционируются, что не требуют отдельного сервера, например → SQLite

    По сути, это таже база данных, но только в файле, который может лежать в любой папке вашего сайта.

    Я не против и не за базы данных!

    Поскольку я не пользуюсь базами данными выше перечисленными, то и о преимуществах и недостатках ничего вам не могу сказать!

    Но зато! Я 5 лет пользуюсь файлом в качестве базы данных. Одна строка - одна статья (формат файла ".dat").

    Скоро - может даже сегодня, напишу(давно надо было сделать это), как можно хранить данные вашего сайта даже и без SQLite - это вообще самый, самый, самый простой способ! И если бы данный способ, как-то меня не устраивал, то я давно бы искал бы альтернативу!

    Единственное -может, если ход дойдет, то для будущих статей буду изучать "SQLite"(но это не точно!) .

    Почему я выбрал файл вместо базы данных!?

    Базы данных придумали не просто так! И для большого проекта - скорее всего нужно использовать базу данных вместо файла.

    Но когда вы собираетесь делать авторский сайт, блог, то база данных - это просто... ну не знаю...

    Вам нужно перевести 10 кг груза и вы нанимаете Белаз грузоподъемность 120.000кг


  2. Авторский сайт на файлах или на базе данных?

    21.04.2021

    Мне не нравятся люди, которые нахватались верхушек и пытаются выдать себя за "гуру"! Я не ГУРУ, но я занимаюсь своим сайтом, который полностью построен на файлах и немного понимаю в файлах. Никаких предпосылок, что я собираюсь задумываться над переходом на базу данных с файлов.

    Просто... частенько вижу в интернете категорические высказывания типа: "Сайт на файлах отстой и т.д. и т.п." - важно не на чём ваш сайт построен! А какой контент! Это самое главное, что вам следует запомнить!
    Этот пункт называется "Авторский сайт" на файлах

    И это именно то, что вы сейчас видите вокруг и давайте попробуем разобраться... "Авторский сайт на файлах" или на базе данных!?

    Предположим, что вы хотите сделать свой собственный авторский сайт(это моя история).

    Естественно -самое простое - хранение данных в файле!

    Давайте попробуем посчитать на пальцах емкость файла - ведь нам нужно знать, сколько статей вы сможете написать , прежде, чем файл станет неподъемным!

    Будут существовать два вида файлов:

    Естественно - в файле базы данных, сами статьи не будут хранится, а лишь краткая информация о странице(формат хранения, либо построчно, либо в ассоциативном массиве), чтобы вывести например их в виде списка.

    А контент будет храниться в отдельных файлах - одна статья - один файл.

    Сколько строк максимально для такого файла?

    Специально провел эксперимент лет несколько назад... на сервере установлен максимальный размер файла, сейчас точно не помню, по моему 13мб - это можно узнать(не проблема.)

    И только после 500.000 строк максимальный разрешенный объем файла был пройден!

    Сколько статей в день!?

    Предположим, что вы зададите себе план - 1 статья в день!

    Отступление...

    Поверьте мне на слово - что это не так просто сделать, как кажется! Насколько я упертый, даже я не смог этого сделать, за все время существования данного проекта, всего дней : - 2197 дней.
    И если мы разделим количество статей, на данный момент 925, на выше приведенное количество дней, то получим:
    4 статьи в 10 дней... (0.42102867546655)
    P.S. если интересно смотри счетчик сколько статей в день php
    Но даже если предположим...

    Вы сможете поддерживать ритм 1 статья в день на протяжении множества лет, то чтобы превысить барьер в 500.000 строк, вам понадобится

    500.000 / 365 = 1369лет

    Вам понадобится 1369лет!!! Предположим невозможное!

    Вы сможете писать 10 статей! Здесь, я как доктор говорю, что это! невозможно для 1 человека!!!

    Но, даже, если это чудо произойдет, то вам все равно понадобится:

    500.000 / 3650 = 137лет

    Зачем это я вам все рассказываю!? К тому, что файл вполне подходит для создания личного сайта.


  3. Основные параметры базы данных в файле.

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

    Всего будет два файла:

    1). Где будем хранить данные о странице?

    Файл базы данных(формат файла ".dat"), где будет краткая информация о странице.

    Формат хранения ассоциативный массив. Первая версия была построчно

    Сейчас - думаю нет необходимости останавливаться на этом подробно...

    2). Где будем хранить контент?

    Контент будем хранить в файлах.

    Формат файла - здесь есть варианты. Сейчас использую ".html", но в будущем движке хочу также перейти на ".dat", но выводиться будет в адресной строке ".html" - это возможно когда у вас единая точка входа

    Формат хранения контента в файле - сейчас в переменных(в этом способе есть свои плюсы и минусы!), но в движке будем хранить в массиве. В чем разница?

    Это мы накидали только часть того, что касается базы данных + бонус немного о страницах.

    Если мы начнем говорить о движке, то это не просто много, а очень много тем... Поэтому, будет отдельная страница!




    1. Файл + ассоциативный массив.

      И страница и файл базы данных - это будет ассоциативный массив..

      Вид такого массива будет, если мы его выведем через print_r :

      Array

      (

      [1638561938933864] => Array

      (

      [data] => 03.12.2021

      [img] => php.png

      [title] => База данных или файл данных

      [description] => Хранение данных база или файл?

      [author] => Марат

      [url] => page/php/001_fayl_vmesto_bazyi_dannyih_.html

      [tags] => PHP/PHP_FILE/DATABASE/PHP_BOOK/

      )

      )

      В чем удобства именно такого хранения данных.

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

      Мы спокойно можем добавить любой элемент в ячейку.

      Добавление ячейки с новым значением

      Удаление ячейки происходит до банальности скучно.

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



    2. Создаем уникальный "ИД"

      Эту тему выделили в отдельный пункт на странице.

      НО! ЕСЛИ!

      Вы соберетесь изменить адрес данной страницы, то ваш "ИД" в ассоциативном массиве автоматически поломается!

      Как решить такую проблему...? Т.е. если ваша страница изменила адрес, то значит её по старому адресу нет. У меня это процесс происходит таким образом...

      Копируем содержание страницы.

      Удаляем страницу + автоматически удаляется ячейка в массиве.

      Создаем новую страницу(вставляем скопированный контент) с новой записью в массиве.




    3. Как и что, будем хранить данные в файле .dat

      После того, как мы получили уникальный "ИД" - $page_id, который и будет главной ячейкой для страницы:

      1638561938933864

      Если вы обратите внимание на ниже идущую первую строчку, то вы должны спросить - зачем там условие!

      Это для того, если массив еще не существует, т.е. не создана еще ни одна страница, то создаем пустой массив.

      Ну а если массив существует, то php вовнутрь по этому условию не зайдет.

      Без данного условия, при каждой отправке данных на запись, массив создавался пустой, с единственной записью. И так каждый раз.

      Процесс создания структуры массива с данными:

      Если вы обратите внимание на ниже идущую первую строчку, то вы должны спросить - зачем там условие! Это для того, если массив еще не существует, т.е. не создана еще ни одна страница, то создаем пустой массив. Ну а если массив существует, то php вовнутрь по этому условию не зайдет. Без данного условия, при каждой отправке данных на запись, массив создавался пустой, с единственной записью. И так каждый раз.

      Записываем название массива, это переменная :

      $example_main_array

      Вторым элементов с троке идет уникальный ид ячейки - это переменная(т.е. таким образом переменной можно присвоить любое значение.) :

      [$page_id]

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

      [data]
      Php:

      <?

      if(!$example_main_array) {$example_main_array = array();}

      $example_main_array[$page_id][data] = date('d.m.Y');

      $example_main_array[$page_id][img] = 'php.png';

      $example_main_array[$page_id][title] = 'База данных или файл данных';

      $example_main_array[$page_id][description] = 'Хранение данных база или файл?';

      $example_main_array[$page_id][author] = 'Марат';//Если это будет авторский блог, то данная ячейка не нужна!

      $example_main_array[$page_id][url] = 'page/php/001_fayl_vmesto_bazyi_dannyih_.html';

      $example_main_array[$page_id][tags] = 'PHP/PHP_FILE/DATABASE/PHP_BOOK/';

      ?>

      Вывод ячейки массива на экран с помощью print_r

      Выведем первую ячейку, которая у нас получилась:

      Array

      (

      [1638561938933864] => Array

      (

      [data] => 03.12.2021

      [img] => php.png

      [title] => База данных или файл данных

      [description] => Хранение данных база или файл?

      [author] => Марат

      [url] => page/php/001_fayl_vmesto_bazyi_dannyih_.html

      [tags] => PHP/PHP_FILE/DATABASE/PHP_BOOK/

      )

      )




    4. Как будем записывать и получать данные из файла

      В данном пункте, хочу обратить ваше внимание!

      Что запись будет производиться "ВСЕГДА" в конец массива. Но нам нужно, чтобы свежая запись всегда была сверху. Просто, чтобы не мучаться с реверсом при выдаче, лучше помучаться с реверсом при записи!

      Собака "@" нужна для того, чтобы при не существующем массиве, не выдавало ошибку...

      Получаем данные file_get_contents

      Из нашего будущего файла "$dir_rotate" - путь естественно должен быть на сервере

      Нам понадобится функция unserialize

      Переменная "$reverse_ok" - нам понадобится ниже, - надеюсь по названию понятно почему!? Чтобы развернуть массив.

      $example_main_array = @unserialize(file_get_contents($dir_rotate));

      if(!$example_main_array) {$example_main_array = array();} else {$example_main_array= array_reverse($example_main_array); $reverse_ok=1;}

      Ниже... тот массив, который мы создавали... в предыдущем пункте.

      $example_main_array[$page_id][data] = date('d.m.Y');

      $example_main_array[$page_id][img] = 'php.png';

      $example_main_array[$page_id][title] = 'База данных или файл данных';

      $example_main_array[$page_id][description] = 'Хранение данных база или файл?';

      $example_main_array[$page_id][author] = 'Марат';

      $example_main_array[$page_id][url] = 'page/php/001_fayl_vmesto_bazyi_dannyih_.html';

      $example_main_array[$page_id][tags] = 'PHP/PHP_FILE/DATABASE/PHP_BOOK/';

      Далее проверяем был ли перевернут массив $reverse_ok, если да, то возвращаем в нормальное направление

      Нам нужна строка, поэтому превратим массив в строку - serialize

      Записываем file_put_contents

      if($reverse_ok){ $example_main_array= array_reverse($example_main_array);}

      $write_for_main = @file_put_contents($dir_rotate, serialize($example_main_array));

      Соберем весь код вместе:

      $example_main_array = @unserialize(file_get_contents($dir_rotate));

      if(!$example_main_array) {$example_main_array = array();} else {$example_main_array= array_reverse($example_main_array); $reverse_ok=1;}


      $example_main_array[$page_id][data] = date('d.m.Y');

      $example_main_array[$page_id][img] = 'php.png';

      $example_main_array[$page_id][title] = 'База данных или файл?';

      $example_main_array[$page_id][author] = 'Марат';

      $example_main_array[$page_id][url] = 'page/php/001_fayl_vmesto_bazyi_dannyih_.html';

      $example_main_array[$page_id][tags] = 'PHP/PHP_FILE/DATABASE/PHP_BOOK/';


      if($reverse_ok){ $example_main_array= array_reverse($example_main_array);}

      $write_for_main = @file_put_contents($dir_rotate, serialize($example_main_array));




    5. Форма ввода для записи в файл .dat

      Нам нужна форма для записи данных в базу в файле .dat, какие данные будем записывать!?

      Дату - создания записи - date('d.m.Y').

      Картинка, либо будет загружаться новая, или же соответствует папке, в которой будет создаваться новая страница. Если вы думаете, что на каждую новую страницу будете делать новую картинку, то к 10-20 странице вам надоест! Поэтому рекомендую на каждую подтему создать картинку, и чтобы она автоматически загружалась. Чтобы не мучаться, сделаем как у меня на сайте. А уж если вы захотите. то сами измените, так, как вам надо.

      Далее два поля, изменим название ячеек в соответствии с "POST", чтобы потом не путаться! - поскольку они обязательны required, то никаеи условия можно не писать.

      $example_main_array[$page_id][title_for_main] = $_POST['title_for_main'];
      $example_main_array[$page_id][description_for_main] = $_POST['description_for_main'];

      Насчет ячейки авторства, если мы говорим, об авторском сайте, то это не обязательно.

      $example_main_array[$page_id][author] = 'Марат';

      Две ячейки [tags] и [url] - на них остановимся на отдельных страницах, потому, что в двух словах тут не получится.

      style

      <style>.width_100pro {

      max-width: 100%;

      margin-bottom: 20PX;

      WIDTH: 100%;

      padding: 10px 0;

      box-sizing: unset;

      }

      .sticky{ position: sticky;

      top: 3px;

      }

      </style>

      Html:

      <form method="post" action="" class="form">

      <input class="width_100pro sticky" type ="submit" name="submit" value="отправить">

      <hr>

      <label class="is_label">Заголовок на главной</label>

      <input type="text" class="width_100pro" name="title_for_main" required>

      <label class="is_label">Текст на главной</label>

      <textarea class="width_100pro" name="description_for_main" id="dw_textarea" required></textarea>

      </form>

      Результат вывода формы:


    1. О моей системе хранения данных.

      На чем основан мой самописный движок? Существует два типа файлов:

      Файл с разрешением ".dat" - где хранится краткая информация о "странице с контентом" построчно, одна строка - одна страница : дата,заголовок,теги, url и т.д.

      Контент храниться в отдельных файлах с разрешением ".html" - одна статья - один файл.

      Пару слов надо сказать о том → почему!?

      Почему файлы а не база данных!?

      Изначально, у меня было несколько сайтов только на html. И мне все время с первого своего сайта(2009) и до 2016года, когда я начал изучать php, приходилось иметь дело с файлами. Поэтому логичнее всего, что с момента запуска, я начал делать свой новый(данный) сайт на файлах, и уже потом оптимизировать с помощью php. Начал делать редактирование файлов онлайн. См. видео на эту тему.

      Никакой внятно рассказанной информации не было или я просто не нашел!

      Поэтому приходилось до всего доходить самостоятельно!

      Как хранятся данные в файлах!?

      Всего для хранения данных(контента) используются два файла.

      Файл основная информация о странице с контентом.

      Главный файл "rotate" с разрешением ".dat" - "rotate.dat", где построчно - одна строка - одна запись о странице с контентом...

      Давайте выведем данную строку, которая принадлежит данной странице:

      Это пример работы с массивом строк...

      Для этого нам понадобится...

      Мы получили массив из файла и поместили его в переменную "$main_fale_rotate"

      В цикле for переберем весь наш массив + понадобится count

      + substr_count

      + explode - в файле адрес страницы хранится без домена , поэтому строку разделим по домену и получим правую строну, или вторую ячейку... массив начинается с "0". Поэтому ячейка 2 - это фактически 1.

      + break - остановимся, когда строка будет найдена и присвоим значение ячейки переменной "$line_example"

      + $domen

      + $real_page

      Код:

      $main_arr_example = explode("\n", file_get_contents($old_main_rotate_for_example)));


      $name_file = basename(__FILE__);

      for ($i=0; $i < count($main_arr_example) ; $i++)

      {

      if(substr_count($main_arr_example[$i], $name_file)) { $line_example = $main_arr_example[$i]; break; }

      }

      Результат:

      Совершенно не обязательно хранить данные именно так - просто с самого начала, как сложилось, так и продолжается(пока)...

      2021.12.27::php.png::Файл вместо базы данных.::Файл .dat вместо базы данных.::Марат::page/php/database/001_fayl_vmesto_bazyi_dannyih_.html::PHP/PHP_FILE/DATABASE/PHP_BOOK/

      Об этом файле нужно завести отдельный пункт:




    2. Файл dat вместо базы данных.

      Итак продолжим об основном файле dat - я его условно назвал - "rotate.dat".

      Как получать данные из файла?

      Для получения данных из файла нам понадобится функция file_get_contents (можно было использовать сразу получение из файла в массив, но как говорится - нет ничего постояннее чем временное.)

      $example_get = file_get_contents( путь_на_сервере'rotate.dat');

      Итак. Мы получили в переменную строку. Теперь нам нужно разбить текст построчно в массив! Для этого нам нужна функция explode:

      $example_array = explode("\n",$example_get);

      Далее нам понадобится цикл, в котором будем обрабатывать каждую строку - например все страницы списков обрабатывается именно так.

      for ($i=0; $i < count($example_array); $i++) {
      $line = explode('::',$example_array[$i]);
      }

      Вот в этой переменной $example_array[$i] у нас находится одна строка цикла. Выше приводил пример(сейчас, может быть обьеденил первые три ячейки даты в одну целую дату. Это было сделано давно, просто не стал переделывать):

      2020::12::21::php.png::База данных или файл данных::Хранение данных база или файл?::Марат::page/php/001_fayl_vmesto_bazyi_dannyih_.html::#ALL::PHP/PHP_FILE/DATABASE/PHP_BOOK/

      И в переменную $line мы получаем уже разбитую строку.

      Далее отдельно по строке внутри цикла:




    3. Раскладываем данные в переменные.

      после этого, как мы разбили строку внутри цикла мы получили массив

      $line = explode('::',$example_array[$i]);

      Вот он в таком виде -выведем его с помощью print_r :

      print_r $line;

      Получим:

      Array

      (

      [0] => 2021.12.27

      [1] => php.png

      [2] => Файл вместо базы данных.

      [3] => Файл .dat вместо базы данных.

      [4] => Марат

      [5] => page/php/database/001_fayl_vmesto_bazyi_dannyih_.html

      [6] => PHP/PHP_FILE/DATABASE/PHP_BOOK/

      )

      Придумываем переменные и присваиваем данные из строки - просто это более удобно. Чем запоминать число!

      $example_data = $line[0];

      $example_img = 'Путь до папки с картинками'.$line[1]; //Если собираетесь использовать картинку. Все-таки веселее чем простой список.

      $example_title = $line[2];//заголовок строки.

      $example_text = $line[3];//текст пояснения, описания строки.

      $example_author = $line[4];//предполагалось, что контент будут добавлять другие пользователи...

      $example_url = $domen . $line[5];//путь http до файла, нам нужен $domen

      $example_tags = $line[6];//отдельная ячейка для сортировки по темам, например(опять обратите на адрес...) : https://dwweb.ru/?tema=DATABASE(не стоит применять ПРОПИСНЫЕ, если для этого нет причины! Не забываем, что мы говорим о 2016)




    4. Итого!

      Работает ли данная система в виде движка - Конечно! Но прошло время и многое из этого, что рассказано выше требует переосмысления!

      В чем неудобность построчного хранения?

      Можно создавать дополнительные ячейки, в конце строки. Но, мне показалось, это неудобным и портит вид самой строки(предвзято...)

      Удаление строки, редактирование строки имеют свои нюансы. Довольно легко запутаться.

      Что мы будем делать!? Я по пунктам буду разбирать тему Сделать сайт пошагово. + на каждый шаг будем делать отдельное видео.


  4. Видео база данных в файле.

    Анонс:

    Данная страница и данное будущее видео будут прономерованы в соответствии с положением, которые они займут на странице как сделать сайт

    Когда дойдет ход до видео, то возьмем ниже идущую теорию и применим на практике, на отдельном домене http://filecms.ru/.

    Раньше это был поддомен! Но, поскольку, в скриптах приходилось учитывать, что это поддомен, то я решил купить домен отдельно!

    После этого, "очередной шаг", всё, что мы сделаем, запакуем в архив и он будет доступен для скачивания в подтеме "Движок"

    Следите за обновлением видео на нашем канале .

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

Пользуйтесь на здоровье! Не забудьте сказать спасибо
Теги :
Файл вместо базы данных,
использование файлов вместо баз данных
в чем отличие базы данных от обычного файла с данными?
база данных на файлах
php база данных в файле

Сообщение системы комментирования :

01.09.2021

Форма пока доступна только админу... скоро все заработает...надеюсь...

Последние комментарии :
Марат :
17.10.2021 39:28
Давно не делал и страницу и видео в один день... чет, как-то выжитый как…
подробнее.
Марат :
10.10.2021 17:20
Добавлен новый смайл
подробнее.
Марат :
05.10.2021 26:37
Страница sitemap.html восстановлена. Но будут вводиться только страницы…
подробнее.
Марат :
04.10.2021 38:22
Добавил несколько вариантов поставить смайл на страницу своего сайта! 3 варианта! Кроме варианта скачать…
подробнее.
Марат :
17.09.2021 28:02
Установка Яндекс поиск на сайт! Контент обновлен на 100%. Такое ощущение, что старый текст не я…
подробнее.
Марат :
07.09.2021 23:21
Частенько приходится исправлять ошибки и вот...как-то я обратил внимание на надпись: "нажми ctrl enter" на сайте и…
подробнее.
ruweb