Ответить
примерно так в Фапосе. Этот вариант мне и больше нравится.
Добавлено2011.06.15 00-58
ну вот как r00t_san рассказал, так обычно и делается.
Лишняя угроза. Если есть возможность удобно обходиться с только файлами, то их и юзаю. Ибо с базой можно упустить моменты, да и зачем грузить базу лишним? Хотя со стороны веса и бекапов, в базе хранить безопасней....
Хотя какая нахуй клиенту разница. Делаю с файлами
Элементарно решается путем создания объекта, символизирующего о блокировке (например, самый простой вариант - файл, под виндой и линуксом можно семафоры использовать и т.п.). Правда, тогда второй записывающий кусок будет подвисать до тех пор, пока первый не удалит объект блокировки, но это незначительные задержки. Хуже то, что в случае ошибки в программе, если объект блокировки не удалится - никто писать не сможет.
Эта проблема очень часто встречается. Я все же решил писать базой, ибо впадлу писать класс для работы с файлом) А на базу уже есть готовый
1
Теоретический вопрос
Отправлено: 14 Июн 2011#1
Передо мной стоит задача: Написание модуля создания страниц.
Т.е. допустим есть страницы с новостями; Диалогами и пр. Пользователю нужно создать статическую страницу, к примеру, с контактами. Как сделать подобный модуль? Есть идея запилить папочку pages и в ней создавать php страницы и в static/pages/* ставить html шаблоны страниц. Но как реализовать запиливание страниц php по шаблону там: (<?php $cont = ... ?>
и выставлять значения переменных в этом шаблоне динамически (после заполнения форм).
Второй вариант: создаю файл: modules/pages/index.php
в GET получаю номер страницы и вывожу соответствующий файл.
Какой из них выбрать?
Т.е. допустим есть страницы с новостями; Диалогами и пр. Пользователю нужно создать статическую страницу, к примеру, с контактами. Как сделать подобный модуль? Есть идея запилить папочку pages и в ней создавать php страницы и в static/pages/* ставить html шаблоны страниц. Но как реализовать запиливание страниц php по шаблону там: (<?php $cont = ... ?>
и выставлять значения переменных в этом шаблоне динамически (после заполнения форм).Второй вариант: создаю файл: modules/pages/index.php
в GET получаю номер страницы и вывожу соответствующий файл.
Какой из них выбрать?
Отправлено: 14 Июн 2011#2
Эм, я конечно немного не понял что именно ты хочешь, но разве нельзя сделать таблицу в БД с контентом статическим и выводить его оттуда. Вообщем... я делал так:
Таблица : content:
id, name, rus_name, html, php
в таблице html просто статический текст. в таблице php я ставил если надо подключить модуль, путь до модуля.
Таблица : content:
id, name, rus_name, html, php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php //подгружаем запрошенную страницу
function getpage()
{
$pname = $_GET['name'];
//если запрос пустой показываем главную
if (empty($pname))
{
$pname = 'main';
}
//запрос в БД страницу
$mainsql = mysql_query ("SELECT * FROM content WHERE name='$pname'");
$maincon = mysql_fetch_array ($mainsql);
$num = mysql_num_rows ($mainsql);
//если есть запись
if ($num > 0)
{
echo "<div class=\"n_header\">";
echo "<div class='headtext'>";
//ставим язык из сессии
if ($_SESSION['lang'] == 'rus')
{
echo "".$maincon['rus_name']."";
}
if ($_SESSION['lang'] == 'eng')
{
echo "".$maincon['name']."";
}
echo "</div>";
echo "</div><div class='context'>";
//если отсутствует модуль показываем html страницы
if($maincon['php']=='')
{
echo("<span style='color:#ffffff;'>".$maincon['html']."</span>");
}
//выводим модуль если есть
else
{
echo "<span style='color:#ffffff;'>";
include ("".$maincon['php']."");
echo "</span>";
//возможность комментить
}
echo "</div>";
}
//нет страницы-редиректим на главную
else
{
echo "<script>window.location=\"/\";</script>";
}
}?>
Отредактировано автором 14 Июн 2011
Если где то нет чего то значит что то где то есть.
Отправлено: 15 Июн 2011#3
skad0 пишет:
в GET получаю номер страницы и вывожу соответствующий файл.
Добавлено2011.06.15 00-58
ну вот как r00t_san рассказал, так обычно и делается.
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 15 Июн 2011#4
Цитата
ну вот как r00t_san рассказал, так обычно и делается.
Лишняя угроза. Если есть возможность удобно обходиться с только файлами, то их и юзаю. Ибо с базой можно упустить моменты, да и зачем грузить базу лишним? Хотя со стороны веса и бекапов, в базе хранить безопасней....
Хотя какая нахуй клиенту разница. Делаю с файлами
Отредактировано автором 15 Июн 2011
Отправлено: 16 Июн 2011#5
В принципе, на файлах легко хранить. Но тут не забывай, что файл (если он будет редактируемым) смогут открыть одновременно 2 пользователя. И есть шанс, что они одновременно его сохранят (маленький, маленький, но все же шанс!) и тогда неизвестно к каким последствиям приведет это. В базе же есть очередность и сколько бы запросов к ней не было, они никогда не пересекутся, чего не скажешь о файлах.
И выходит, что хранение в файлах - это тоже
И выходит, что хранение в файлах - это тоже
Цитата
Лишняя угроза.
Отредактировано автором 16 Июн 2011
Отправлено: 16 Июн 2011#6
Krevedko пишет:
В принципе, на файлах легко хранить. Но тут не забывай, что файл (если он будет редактируемым) смогут открыть одновременно 2 пользователя. И есть шанс, что они одновременно его сохранят (маленький, маленький, но все же шанс!) и тогда неизвестно к каким последствиям приведет это.

Отредактировано автором 16 Июн 2011
Отправлено: 16 Июн 2011#7
Цитата
объект блокировки не удалится
Эта проблема очень часто встречается. Я все же решил писать базой, ибо впадлу писать класс для работы с файлом) А на базу уже есть готовый
Отправлено: 16 Июн 2011#8
Скажу что я думаю по этому поводу. Все ИМХО, но тем не менее подкрепленное опытом.
Если инфы мало и она очень часто редактируется, например при каждом обращении к странице сайта, то лучше юзать файлы. Приведу пример такой инфы:
счетчики посещений
кто онлайн
кто просматривает данный форум
временные файлы антидоса, которые создаются при каждом обращении к любой странице
и т.д.
А в базе данных нужно хранить ту инфу, которая относительно редко изменяется и является критической.Критической? Ну да, критической - той которая нужна для сайта и для его работоспособности. Почему же такую информацию лучше хранить в базе? По тому что, если ты сделаешь дамп базы, то у тебя в нем будет вся важная инфа. А если она в файлах, то кроме дампа базы, придется еще постоянно делать дамп файлов.
И я бы не парился о том что будет лишний запрос к базе, в крайнем случае можно поставить кэш и если страница не менялась и есть кэш, то она будет отдаваться из кэша. Если же в кэше ее нет, то сделается запрос к базе и закэшируется, что бы в дальнейшем брать ее из кэша. То есть потери времени особо никакой.
Если инфы мало и она очень часто редактируется, например при каждом обращении к странице сайта, то лучше юзать файлы. Приведу пример такой инфы:
счетчики посещений
кто онлайн
кто просматривает данный форум
временные файлы антидоса, которые создаются при каждом обращении к любой странице
и т.д.
А в базе данных нужно хранить ту инфу, которая относительно редко изменяется и является критической.Критической? Ну да, критической - той которая нужна для сайта и для его работоспособности. Почему же такую информацию лучше хранить в базе? По тому что, если ты сделаешь дамп базы, то у тебя в нем будет вся важная инфа. А если она в файлах, то кроме дампа базы, придется еще постоянно делать дамп файлов.
И я бы не парился о том что будет лишний запрос к базе, в крайнем случае можно поставить кэш и если страница не менялась и есть кэш, то она будет отдаваться из кэша. Если же в кэше ее нет, то сделается запрос к базе и закэшируется, что бы в дальнейшем брать ее из кэша. То есть потери времени особо никакой.
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 16 Июн 2011#9
Я тоже очень интересовался нагрузкой на базу данных и выяснил для себя, что она ничтожно мала, по сравнению работы того же Apache в связке с php. У себя (в коэс 1.6
) реализовал систему достижений, систему клановой прокачки, новую денежную систему и многое другое. Так вот в секунду идет около 1 запроса от игрока, на 5 серверов это 150 запросов в секунду. Запросы небольшие, вроде TINYTEXT и int(10). И нагрузка на базу выходит просто мизерной: около 2-5% на процессор в пик своей загруженности.
) реализовал систему достижений, систему клановой прокачки, новую денежную систему и многое другое. Так вот в секунду идет около 1 запроса от игрока, на 5 серверов это 150 запросов в секунду. Запросы небольшие, вроде TINYTEXT и int(10). И нагрузка на базу выходит просто мизерной: около 2-5% на процессор в пик своей загруженности.Отправлено: 16 Июн 2011#10
В том то и дело, что модуль снипетов и чанков уже реализован. И реализован базой.
Я реализовывал создание статических страниц. Типа контакты и прочая хуетень. Реализовал базой. Адаптация к чанкам и сниппетам затруднений не вызвала. Отшлифую модуль на старой cms и перенесу на новую.
Спасибо всем за помощь
Я реализовывал создание статических страниц. Типа контакты и прочая хуетень. Реализовал базой. Адаптация к чанкам и сниппетам затруднений не вызвала. Отшлифую модуль на старой cms и перенесу на новую.
Спасибо всем за помощь
Отредактировано автором 16 Июн 2011
1
Зарегистрируйтесь или авторизуйтесь что бы писать
Сейчас online: 10. Зарегистрированных: 0. Гостей: 10.

