Проектирование CMS

vovanium

Новичок
ExcluZZ
нашел много разных статей и везде трындят об однозначном превосходстве utf8
Большинство этих знатоков вообще не соображают, что такое UTF-8 и для чего её юзать. Я уже даже встречал знатаков которые всерьез доказывали, что UTF-8 лучше cp1251, так как UTF-8 более современная и меньше места занимает :)
Также убивают проекты у которых базы в UTF-8, но при этом они не в курсе, что нужно как бы кодировку соединения тоже ставить UTF-8, и в итоге они cp1251 записывают с кодировкой соединения latin1 в таблицы UTF-8 :) И потом еще других учат UTF-8 юзать
 

ExcluZZ

Новичок
Так что скажешь сам? какую кодировку лучше использовать, в какой кодировке хранить базу данных? я как понял utf8 позволяет использовать все алфавиты и вообще множество разных символов, но кириллица в ней весит в 2 раза больше. Так что использовать? кто как думает?
 

damngood

Мозг был, но ушел...
ExcluZZ
Ты подсказки ждешь или чего? Используй то, что тебе удобно. Ну и о людях, которые могут захотеть купить у тебя твой софт тоже не забывай, пиши все как следует =)
 

ExcluZZ

Новичок
не то чтобы подсказки, я просто плохо разбираюсь, потому тут и спрашиваю, может быть какие-то трудности могут быть при той или иной кодировке, заранее хочется узнать подвохи)
судя по всей той инфе что я начитал в инете, лучше переводить все на utf8 и привыкать сразу к более универсальным вещам.
 

damngood

Мозг был, но ушел...
Трудности от кодировки никак не зависят, зависят они от того, что будет нарушено хранение данных. Некоторые умудряются хранить все в latin1 кодировке, при том, что сама база выставлена как utf, а шаблоны сайта в сp1251. Вот тут секс и начнется.
 

vovanium

Новичок
ExcluZZ
Я стараюсь использовать cp1251 в случаях когда не планируется больше английского/русского языков, т.к. в любом случае обработка однобайтных символов будет быстрее, чем символов с переменной длиной, да и сама база компактнее.
Ну, а utf8 юзать когда много языков используется, или когда лениво думать о выборе кодировки :)
ИМХО, в идеале cms должна быть написана с возможностью работы с разными кодировками. Это не только установка SET NAMES, но и использование функций для многобайтных строк, вместо однобайтных, когда это нужно.
Но в принципе выбор конкретной кодировки не так критичен, главное её использовать с умом. А то к примеру даже такой популярный форум как phpbb 3 юзает utf8 через зад, например, использует для всех таблиц utf8_bin :)
 

zerkms

TDD infected
Команда форума
Я стараюсь использовать cp1251 в случаях когда не планируется больше английского/русского языков, т.к. в любом случае обработка однобайтных символов будет быстрее, чем символов с переменной длиной, да и сама база компактнее.
спичечная оптимизация :)
 

vovanium

Новичок
zerkms
У тебя какая-то неадекватная реакция на слова "быстрее". "Быстрее" не значит, что прям все летать станет после смены кодировки. Просто в данных случаях, utf8 ничего кроме увеличения размеров базы, и некоторого замедления работы (врятли оно будет сильно ощутимо, но оно будет) не даст.
Да и экономится прилично место, особенно если еще полтекстовые индексы используются.
 

Shasoft

Новичок
Тоже делаю свою CMS (точнее что-то что я считаю движком). Вопрос про КЭШ-ирование.
У меня все запросы перенаправляются в мой index.php
Мои мысли такие: кешировать страницы в отдельную директорию и в mod_rewrite настроить таким образом, чтобы перед тем как перенапрвлять в мой index.php проводилась проверка существования страницы в КЭШ-е. Если она там есть, то перенаправлять сразу на неё.

Правильно ли моё понимание, что в таком случае интерпретатор PHP вообще не будет запущен? Или всё таки не будет никакой разницы, если я буду проверять наличие КЭШ-а в index.php?
 

ExcluZZ

Новичок
Автор оригинала: Shasoft
Тоже делаю свою CMS (точнее что-то что я считаю движком). Вопрос про КЭШ-ирование.
У меня все запросы перенаправляются в мой index.php
Мои мысли такие: кешировать страницы в отдельную директорию и в mod_rewrite настроить таким образом, чтобы перед тем как перенапрвлять в мой index.php проводилась проверка существования страницы в КЭШ-е. Если она там есть, то перенаправлять сразу на неё.

Правильно ли моё понимание, что в таком случае интерпретатор PHP вообще не будет запущен? Или всё таки не будет никакой разницы, если я буду проверять наличие КЭШ-а в index.php?
может я что-то не понимаю, но слышу какой-то странный метод, повторюсь что я не професионал...
а вдруг ты меняешь в базе инфу на странице? в кэше в твоем она останется? и смысл вообще этого кэша? почему просто напрямую не выводить из бд нужные данные.. наверное я просто вообще не понимаю о чем идет речь...


а сегодня я продолжу свою разработку и хочу представить общественности кусочек кода, который в моей цмс-ке определяет необходимую страницу из бд.
напоминаю, что в бд есть поля:
id - идентификатор страницы
parent - идентификатор родительской страницы
url - название страницы в адресной строке

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

$parts_url = explode("/", substr(urldecode($REQUEST_URI), 1, -1));
$directory[id] = 0;
foreach($parts_url as $part_url) {
	$directory = mysql_fetch_array(mysql_query("SELECT * FROM structures WHERE parent='$directory[id]' AND url='$part_url'"));
	}
Так правильно?
особо интересно услышать мнение damngood, т.к. я понял он хорошо понимает о чем я тут вообще)

Добавлю.....
на выходе я получаю массив $directory со всеми данными моей страницы. $directory $directory[title] $directory[content] и т.д.
 

boombick

boombick.org
запросы в цикле и sql-инъекция

-~{}~ 19.12.09 15:13:

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

pilot911

Новичок
искать в базе страницу по урлу лучше так, как это делается в mzz

там возможен шаблон типа :language/news/:news_category


по такому шаблону сверяется урл - и если шаблон подходит под этот урл, то он и ищется в таблице страниц


то есть в базе хранишь не урлы, а шаблоны
 

zerkms

TDD infected
Команда форума
как-то я даже не совсем понимаю о чём разговор :)
у нас нет универсальных страниц и разделов, у нас обычные роутеры, которые заворачивают управление на конкретный контроллер.
 

pilot911

Новичок
Автор оригинала: zerkms
как-то я даже не совсем понимаю о чём разговор :)
у нас нет универсальных страниц и разделов, у нас обычные роутеры, которые заворачивают управление на конкретный контроллер.
у вас роутеры прописаны в специальных файлах


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


 

zerkms

TDD infected
Команда форума
а что мешает вообще весь код хранить в базе? а ещё - шаблоны и, пожалуй, заливаемые файлы :)
 

pilot911

Новичок
Автор оригинала: zerkms
а что мешает вообще весь код хранить в базе? а ещё - шаблоны и, пожалуй, заливаемые файлы :)
шаблоны блоков страницы, как и их параметры удобно хранить в базе.. я так и делаю

одним sql запросом выбираем всю страницу, десериализуем ее структуру в массив и начинаем вызывать из контроллера вьюверы блоков в соответствии со структурой

размер записи такой страницы в БД занимает где-то 10-60кбайт, так что не оч страшно на производительности сказывается
 

zerkms

TDD infected
Команда форума
как вообще принцип построения фронт-контроллера в мзз связан с тем о чём мы сейчас говорим? mzz это НЕ ЦМС. у нас нет никаких страниц/разделов/подразделов и прочего.
 

pilot911

Новичок
Автор оригинала: zerkms
как вообще принцип построения фронт-контроллера в мзз связан с тем о чём мы сейчас говорим? mzz это НЕ ЦМС. у нас нет никаких страниц/разделов/подразделов и прочего.
не знаю, с чего ты подумал, будто я тут мзз как цмс предлагаю.. :) всего лишь показал, как можно связывать урлы и страницы - то, что интересует автора ветки :)
 
Сверху