
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
15.03.2013, 01:37
|
|||
|---|---|---|---|
|
|||
[php]Нароутить роутер |
|||
|
#18+
Доброе утро! Вопрос по обработке ЧПУ. Есть УРЛ вида /section/subsection/page/param1/param2 количество секций неограничено, параметров тоже. т.е. фактически: Код: php 1. 2. 3. 4. 5. 6. 7. 8. в БД таблица page имеет поля [id] [parent_id] ... Были варианты: 1) Выбирать из БД перебирая этот массив, пока мускул не вернёт пустой результат (т.е. страница была до этого,а теперь и дальше - параметры). - много запросов 2) Хранить урл целиком, использую полнотекстовый поиск. (совсем некрасиво) Как быть? Как бы вы решили такую заковыку? PS: использовать id в урл не хочу. использовать 1000 else if тоже ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.03.2013, 01:51
|
|||
|---|---|---|---|
|
|||
[php]Нароутить роутер |
|||
|
#18+
на самом деле идея генерировать автоматически файл для роутинга как у автора if / else имеет право на жизнь с некоторыми оговорками, одной из которых является та, что делать сопоставления нужно явно не толпой IF'ов кстати в вашем варианте №2 гораздо быстрее, с одной оговоркой: полнотекстовый поиск не нужен, достаточно индекса по строковому полю, т.к. сопоставление будет идти на точное совпадение. А вообще посмотрите как это организовано в фреймворках тот же зенд или симфони ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.03.2013, 01:56
|
|||
|---|---|---|---|
[php]Нароутить роутер |
|||
|
#18+
kalamfur, можно сделать круче, в базу в поле url страницы писать: /news/:news_category/:year/:month/:day/ вызывать составление регулярки для этого шаблона и на выходе в контроллере получать в GET массив уже готовые значения, например, для урл: /news/cinema/2013/03/15/ получишь GET: Код: php 1. 2. 3. 4. самый наглядный и простой вариант - это роутер от http://www.mzz.ru/en/download ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.03.2013, 10:24
|
|||
|---|---|---|---|
|
|||
[php]Нароутить роутер |
|||
|
#18+
Обязательно просмотрю как это делается в симфони и зенде. Просто как водится в пятницу работы поднакинули. Герой дня , либо я ничего не понял(скорее так), либо .. Т.е. мне надо иметь поля с датами, секциями, подсекциями (вложенность которых варьируется)? Anjey aka PM , т.е. второй вариант оптимален? Или вы бы его не стали пользовать?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.03.2013, 12:06
|
|||
|---|---|---|---|
|
|||
[php]Нароутить роутер |
|||
|
#18+
kalamfur, все зависит от задачи и от нагрузки на самом деле В любом случае второй вариант если использовать, то как надстройку над стандартными схемами роутинга типа module/controller/action/param_1/value_1/...../param_n/value_n Однако не стоит забывать что не всегда оптимально дергать базу данных каждый раз для роутинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&tablet=1&tid=1464012]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 321ms |

| 0 / 0 |
