За последние 24 часа нас посетили 21854 программиста и 988 роботов. Сейчас ищет 641 программист ...

Реализация произвольных ЧПУ. [Рассуждение, поиск алгоритма]

Тема в разделе "Решения, алгоритмы", создана пользователем Koc, 1 мар 2009.

  1. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Koc
    ну хз, битрикс делает именно так. по моему там вместо parameter передается массив, в котором все это и указывает (я про сортировку и т п)
     
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Так, стоп флуд и съезды в оффтоп. Последние сообщения зачистил, кто матерлся и кого обкладывали не стал смотреть. Считать первым и последним предупреждением, иначе расстреляю из плюсомёта.
     
  3. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Psih
    спасибо большое!
     
  4. kostyl

    kostyl Guest

    А что это все вообще значит? Можно чисто по этим директивам подробно объяснить.
     
  5. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    ай-яй-яй, не знать таких простых вещей.

    Options -Indexes значит что если в папке нету index.php index.html (DirectoryIndex короче) и мы попытаемся просмотреть содержимое папки то будет возвращена 403 ошибка

    # - комментарий

    <IfModule mod_rewrite.c> - проверяем есть ли в апаче мод-реврайт

    RewriteEngine On - включаем движок перезаписи урлов (ГО каже что это нужно пихать в httpd.conf, ибо если в .htaccess'е такое находится, то типа все заново стартует и это капец как медленно)

    RewriteBase - http://www.shtogrin.com/library/web/mod ... writeBase/

    RewriteCond - условия, что такого файла или каталога нету, подробнее http://www.shtogrin.com/library/web/mod ... writeCond/

    RewriteRule - правило, что делать если хоть одно из верхних условий сработало


    ваще эта вся хренотень накроется тазом, если делать по-пацански, с использованием nginx или lighttpd. А может и не накроется, а там это можно как-то иначе сделать, я не пробовал. Еще не было необходимости.
     
  6. kostyl

    kostyl Guest

    Koc
    Стыжусь. Спасибо.
     
  7. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    короче все стало еще сложнее:

    есть коллективные блоги. У категории блога свой nice url.
    есть записи в блоге. Каждая запись может находиться только в одной категории. У нее свой nice url, основанный на nice url категории, в которой она.

    можно записывать так
    blogs/cat1/entry1
    blogs/cat1/entry3
    blogs/cat2/entry6
    blogs/cat3/entry8

    но тут мы переименовываем cat3 в cool-cat и получается жопа. Мы должны пройтись по всей таблице с урлами и позаменять их. Что б придумать?
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    переписать ВСЁ
     
  9. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  10. ss64

    ss64 Активный пользователь

    С нами с:
    25 мар 2010
    Сообщения:
    35
    Симпатии:
    0
    хм, честно сказать при первой попытке с чпу у меня была по сути такая же реализация, именно в файлах(даже на русском языке :)))) ).
    Так вот, у меня это ещё круче сделано, ща поясню.
    Как я понял в битриксе для редактирования содержимого страницы нужно править пхп код, пускай даже простой.
    Что не есть хорошо с моей точки зрения.
    Я сделал так -
    1 - ЮРЛ записывается как есть в базу
    2 - выбор создавать или нет файл на диске// по большей части для оптимизации, кеширование с оссобенностями
    3 - каждый новый создаваемый файл копируется из предопределенного места / т.е. в каждом файле по 3 строчки кода.
    таким образом любая нумерация модулей/страниц в юрл или пхп у меня отсутсвует

    Но что меня смущает в данном подходе:
    1) Допустим у нас сайт содержит 5-10 страниц, и лишние 20-40килобайт(для винды кластер 4кб как факт) на жестком роли не сыграют.
    но предположим, что у нас крупный сайт и там допустим страниц эдак несколько тысяч будет.
    Это полюбому приведет к засорению жесткого диска, фрагментации, кароче снижает скорость.
    2) так же кроме этих мелких файлов в результате различных сбоев у нас вполне вероятно появится неиспользуемый мусор, который так же нужно чистить, ну тут в принципе сверка с базой и удаление не найденых файлов.
    короче свой мусоросборщик делать надо.
    3) по скольку информация дублируется в базе и на жестком то это приводит опять же к проблемам переименования
    если же это хранится именно в файловой структуре(про битрикс) и самих пхп файлах
    то тут вероятно проблемы с админкой будут ибо мы папку переименуем, код в пхп поправим, а другие пхп файлы об этом ещё не знают, кароче в любом случае у нас помойка и тормоза.
    4) такж е отдельный вопрос бекапов, одно хорошо,что в никсах есть специальная файловая система, для мелких файлов, но на это врядли можно расчитывать, поэтому каждая такая операция будет занимать продолжительное время.

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

    короче этовсё временныеварианты .
     
  11. ss64

    ss64 Активный пользователь

    С нами с:
    25 мар 2010
    Сообщения:
    35
    Симпатии:
    0
    Ничего личного, но сдается мне, что у тебя несколько устаревший взгляд на вещи.
     
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ерунда полная. При интенсивной работе все эти несколько тысяч(и даже сотен тысяч) страниц лягут в память - целиком.
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ss64
    судя по тому что вы пишите, ваше мнение никак нельзя принимать всерьёз.
     
  14. ss64

    ss64 Активный пользователь

    С нами с:
    25 мар 2010
    Сообщения:
    35
    Симпатии:
    0
    ***Ерунда полная. При интенсивной работе все эти несколько тысяч(и даже сотен тысяч) страниц лягут в память - целиком.***

    Ну если так, то это весьма радует :)
    Хотя по прежнему сдается, что лучше вообще без файлов обойтись.

    Я вот ещё вспоминаю случай когда грузил словарь около 200-250тысяч строк и весом в 5 мегабайт

    Всё это дело у меня потом заносилось в 3 массива и пожирало прилично памяти, но тем не менее работало достаточно быстро.
    С лимитом в 400 мегабайт памяти для пхп этого было не достаточно, писал типа память закончилась, невозможно записать данные.(при загрузке файла)

    От чего может быть такой жуткий расход памяти?

    Попутно вопрос, с файлом допустим в 10-20тыс строк и переодической перезаписью как будет влиять производительность/пожирание памяти

    Или лучше обойтись базой данных?
     
  15. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Быть такого не может.

    Плюс пользуйтесь shared mem, или соответствующими функциями в опкодкешерах (тех, которые имеют, например, apc), тогда ваш словарик будет один на десятки запущенных скриптов.

    Кто будет влиять?