Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[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:37 |
|
||
|
[php]Нароутить роутер
|
|||
|---|---|---|---|
|
#18+
на самом деле идея генерировать автоматически файл для роутинга как у автора if / else имеет право на жизнь с некоторыми оговорками, одной из которых является та, что делать сопоставления нужно явно не толпой IF'ов кстати в вашем варианте №2 гораздо быстрее, с одной оговоркой: полнотекстовый поиск не нужен, достаточно индекса по строковому полю, т.к. сопоставление будет идти на точное совпадение. А вообще посмотрите как это организовано в фреймворках тот же зенд или симфони ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 01:51 |
|
||
|
[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, 01:56 |
|
||
|
[php]Нароутить роутер
|
|||
|---|---|---|---|
|
#18+
Обязательно просмотрю как это делается в симфони и зенде. Просто как водится в пятницу работы поднакинули. Герой дня , либо я ничего не понял(скорее так), либо .. Т.е. мне надо иметь поля с датами, секциями, подсекциями (вложенность которых варьируется)? Anjey aka PM , т.е. второй вариант оптимален? Или вы бы его не стали пользовать?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 10:24 |
|
||
|
[php]Нароутить роутер
|
|||
|---|---|---|---|
|
#18+
kalamfur, все зависит от задачи и от нагрузки на самом деле В любом случае второй вариант если использовать, то как надстройку над стандартными схемами роутинга типа module/controller/action/param_1/value_1/...../param_n/value_n Однако не стоит забывать что не всегда оптимально дергать базу данных каждый раз для роутинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=117&tid=1464012]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 379ms |

| 0 / 0 |
