ФорумПрограммированиеPHP для идиотов → Оптимизация роутера запросов

Оптимизация роутера запросов

  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 10:19, спустя 3 минуты 4 секунды

    md5, после твоего поста я подумал также :-D {+++18+++} пошел топик в "курилку" переименую )))
    Сапожник без сапог
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 3:00, спустя 101 день 15 часов 41 минуту

    быстрее всего роутинг выполняют сами сервера apache/nginx, поэтому если нужно выгадать миллисекунды - разбейте функционал по файлам
    /search/index.php
    /docs/index.php
    /catalog/index.php
    и т.д.

    а то регекспами разбирать - канешн накладно. бгг
    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 15 июня 2010 г. 3:06, спустя 6 минут 34 секунды

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

    ιιlllιlllι унц-унц
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 3:23, спустя 16 минут 33 секунды

    как для абсолютно произвольной схемы

    не бывает идеальных решений, бывают оптимальные. можно например уменьшать не количество регекспов, а количество проверок, т.е. запихивать вычисленные роуты в мемкэш
    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 15 июня 2010 г. 3:42, спустя 18 минут 45 секунд

    нука-нука, сохранять уже разобранные совпадения?
    ιιlllιlllι унц-унц
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 3:58, спустя 16 минут 8 секунд

    $route_id = memcache_get($_SERVER['REQUEST_URI']);
    if ($route_id === false){
    // ищем совпадение для url
    // $route_id = …
    memcache_set($_SERVER['REQUEST_URI'], $route_id);
    }
    if (!$route_id) { /* 404 */}
    $route_info = getRouteInfo($route_id);
    {+++79+++} хотя не, это я глупость написал. роуты в кэше хранить не нужно
    не всё полезно, что в swap полезло
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 4:09, спустя 10 минут 54 секунды

    вы чё гоните, какние регексы нахрен?
    domain.com/param/value/param/value/param/value/param/value

    <?php
    //ПОКАЗЫВАЮ АБСТРАКТНО ИДЕЮ
    $route = array(
    &#39;param&#39; => &#39;value&#39;,
    &#39;param&#39; => &#39;value&#39;,
    &#39;param&#39; => &#39;value&#39;,
    &#39;param&#39; => &#39;value&#39;
    );

    function Action::run(&amp;$ruote)
    {
    $nextActionName = array_shift($ruote);

    if ($nextActionName) {
    $this->getResponse()->myInternalAction = $this->getAppl()->getCountroller()->runAction($route);
    }

    }
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 4:33, спустя 24 минуты

    domain.com/param/value/param/value/param/value/param/value

    есть такая вещь, как seo-требования, &quot;красивые&quot; урлы полезны, это раз. и два, урлы первичны, реализация вторична
    site.com/controller/documents/docname/about/ вместо site.com/about/ - нормально?
    не всё полезно, что в swap полезло
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 4:59, спустя 25 минут 53 секунды

    master, в моём абстрактном примере $route - это чистые данные для маршрутнизации, поэтому над ним будет 100% ная надстройка для реврайта и прочей хрени.
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 15 июня 2010 г. 6:29, спустя 1 час 30 минут 58 секунд

    ололол :D:D:D

    мастер жжешь!

    запрос к мемкешу - быстрее регулярки? )))) пусть даже 20-50? )))))))))
    Сапожник без сапог
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 15 июня 2010 г. 6:35, спустя 5 минут 54 секунды

    запрос к мемкешу - быстрее регулярки? )))) пусть даже 20-50? )))))))))

    я не знаю, тестить надо
    из-за 20-50 регулярок я б не стал париться, а вот из-за 500 можно подумать.
    но роуты в кэше всё равно хранить не нужно, и не из-за скорости.
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 15 июня 2010 г. 6:38, спустя 2 минуты 41 секунду

    master, роуты я бы хранил в &quot;быстром&quot; кеше - например в переменной сессии / Application. сериализация для размеров до 50кб - мегабыстрое дело, можно и закешить :) {+++26+++} и то полезно в паре случаев - в ддос например))) чтобы проц на регулярках не потерять
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 15 июня 2010 г. 9:57, спустя 3 часа 18 минут 51 секунду

    в общем случае разбор маршрута это не &quot;бутылочное горлышко&quot; в производительности.
    мне нравится тезис master о том, что сайт это всего-лишь машина преобразующая url в html.
    париться вообще не надо ни по какому поводу.
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 15 июня 2010 г. 11:57, спустя 1 час 59 минут 48 секунд

    artoodetoo, уху, здравый тезис)
    Сапожник без сапог
  • Frukts

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 10:28, спустя 794 дня 22 часа 31 минуту

    не сама а сам.и не с собой,а пытаюсь поговорить с табой

Пожалуйста, авторизуйтесь, чтобы написать комментарий!