ФорумПрограммированиеPHP для идиотов → Cache: remove by tag or by pattern?

Cache: remove by tag or by pattern?

  • kostyl

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

    Spritz 9 мая 2010 г. 2:05, спустя 7 часов 46 минут 2 секунды

    это не стёб, я серьезно спросил
  • artoodetoo

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

    Spritz 9 мая 2010 г. 7:45, спустя 5 часов 40 минут 7 секунд

    Если серьезно, то это проблема не SMF и не PHP, а вообще округления чисел с плавающей запятой. Постоянно сталкиваюсь с такими заморочками:
    Пусть сумма долей неважно чего равна единице. Предположим доли разложились как 0.45 и 0.55, а требуемая точность вывода - одна десятая. Округляем до десятых по математическим правилам:
    0.5 и 0.6 в сумме дают 1.1 (!!!)
    Мы можем увеличить точность вывода до сотых и всё станет ок (для этого случая), но потом случится 0.445 и 0.555. Округляем до сотых:
    0.45 и 0.56 в сумме дают 1.01 (!!!)
    Если вместо округления использовать отбрасывание лишних разрядов, то легко наткнуться на обратный эффект:
    0.44 и 0.55 в сумме 0.99

    Задача решения не имеет для настоящих плавающих чисел. Есть грязный хак, когда мы вычисляем одно из слагаемых обратным расчетом для уже округленных данных x = 1 - y … Тогда на страничке все будет выглядеть ОК, но может не соответствовать реальным данным.

    Прилично выглядит только математика с фиксированной точкой.

    Спустя 22 сек.
    С уважением,
    КО
    ιιlllιlllι унц-унц
  • kostyl

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

    Spritz 9 мая 2010 г. 13:28, спустя 5 часов 42 минуты 25 секунд

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

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


  • Абырвалг

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

    Spritz 9 мая 2010 г. 14:16, спустя 48 минут 37 секунд

    Дуд морозится и не хочет рассказывать про свои группировки
  • phpdude

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

    Spritz 9 мая 2010 г. 14:46, спустя 29 минут 57 секунд


    Дуд морозится и не хочет рассказывать про свои группировки
    это $parentId

    чтобы можно было указать прямой ключ и ключ/и для "группировки", то есть есть например кеш запись user-$id-profile, если user-$id-rss, user-$id-messages и хочу все снести, так мне нравитсо бы удалить все с помощью $cache->removeByParent($id), а не 10 ревовав, а каких? еще надо знать :)
    Сапожник без сапог
  • Абырвалг

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

    Spritz 9 мая 2010 г. 14:51, спустя 4 минуты 35 секунд

    мм, так а как это реализовывается? Вот у меня в remove можно задать шаблон для удаления (в голосовалке же он даже):
    $cache->remove("user-$id-*"); // паттерн. * эквивалентно (.+?)
  • phpdude

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

    Spritz 9 мая 2010 г. 14:54, спустя 3 минуты 13 секунд

    Абырвалг, интересно как ты это все "удаляешь", ключи чтоли перебираешь?
    Спустя 17 сек.
    это немножко не шаблон какбы)
    Спустя 13 сек.
    это именно родитель/родители
    Сапожник без сапог
  • Абырвалг

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

    Spritz 9 мая 2010 г. 15:03, спустя 9 минут 7 секунд

    ключи чтоли перебираешь?

    да
    Спустя 29 сек.
    ну нахуярь код, посмотрим че там) потому что я не понял как это делается
  • phpdude

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

    Spritz 9 мая 2010 г. 15:14, спустя 10 минут 33 секунды

    Абырвалг, мне пока некогда, занят
    Сапожник без сапог

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