ФорумПрограммированиеПыхнуть хотите?Готовые решения → FileCache class ala dude.

FileCache class ala dude.

  • phpdude

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

    Spritz 28 апреля 2009 г. 13:27

    http://hell.phpdude.ru/archives/584

    может кому пригодится. :)
    Сапожник без сапог
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 28 апреля 2009 г. 19:16, спустя 5 часов 48 минут 37 секунд


    http://hell.phpdude.ru/archives/584

    может кому пригодится. :)
    Спс, пригодилось =), а почему называешь говонокодом ? Оо
  • AlexB

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

    Spritz 28 апреля 2009 г. 19:32, спустя 16 минут 20 секунд

    phpdude, я в исходники не залезал ибо лень … объясни на пальцах, плиз …
    Допустим какой-нибудь гиморный алгоритм долго что-то высчитывает, а потом результат сбрасывает в кеш …
    Но! У нас может одновременно идти много обращений к этому срипту, таким образом пока первый процесс недосчитал т.к. кеша еще нет стартует второй, он тоже начинает считать и в свою очередь тормозит первый … дальше цепная реакция и сервер в дауне еще до того как сформирован кеш.
    У тебя как-то решена эта проблема?
  • md5

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

    Spritz 28 апреля 2009 г. 20:36, спустя 1 час 3 минуты 36 секунд

    AlexB, нет, там на столько глубоко не копано :)
    там симпл, на 30 строк кода..
    все умрут, а я изумруд
  • phpdude

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

    Spritz 28 апреля 2009 г. 21:32, спустя 56 минут 13 секунд


    phpdude, я в исходники не залезал ибо лень … объясни на пальцах, плиз …
    Допустим какой-нибудь гиморный алгоритм долго что-то высчитывает, а потом результат сбрасывает в кеш …
    Но! У нас может одновременно идти много обращений к этому срипту, таким образом пока первый процесс недосчитал т.к. кеша еще нет стартует второй, он тоже начинает считать и в свою очередь тормозит первый … дальше цепная реакция и сервер в дауне еще до того как сформирован кеш.
    У тебя как-то решена эта проблема?
    такие задачи на локах решаются. то есть есть testid + testid.lock метки грубо говоря. когда начинается считать, то создается лок, и пока не досчитается лок не снимается.а экспайре функция проверяет этот лок и говорит что в кеше есть. если локед подсчет, то функция гет просто тупо while true с задержкой в н микросекунд пока не дождется результата и снятия лока. нет это не реализовано, ибо не для того этот говнокод)))))))

    но можно конечно и такой кеш умный организовать :)
    Сапожник без сапог
  • phpdude

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

    Spritz 28 апреля 2009 г. 21:33, спустя 1 минуту 33 секунды


    AlexB, нет, там на столько глубоко не копано :)
    там симпл, на 30 строк кода..
    да правильно. это простой кеш для не СИЛЬНО НАГРУЖЕНЫХ проектов))) где есть паралелньые сильно сложные задачи)
    Сапожник без сапог
  • AlexB

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

    Spritz 29 апреля 2009 г. 0:00, спустя 2 часа 26 минут 59 секунд


    такие задачи на локах решаются. то есть есть testid + testid.lock метки грубо говоря. когда начинается считать, то создается лок, и пока не досчитается лок не снимается.а экспайре функция проверяет этот лок и говорит что в кеше есть. если локед подсчет, то функция гет просто тупо while true с задержкой в н микросекунд пока не дождется результата и снятия лока. нет
    Гмммм … а если лок-файл создался, а скрипт его создавший вылетел по каким-то причинам (таймаут, ошибка, питание) недоработав до конца. Все застрянет …
  • ubica

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

    Spritz 29 апреля 2009 г. 0:23, спустя 23 минуты 5 секунд

    AlexB, это форс-мажор :)
    можно проверять "правдоподобность" ttl лок-файла думаю
  • phpdude

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

    Spritz 29 апреля 2009 г. 0:34, спустя 10 минут 31 секунду



    такие задачи на локах решаются. то есть есть testid + testid.lock метки грубо говоря. когда начинается считать, то создается лок, и пока не досчитается лок не снимается.а экспайре функция проверяет этот лок и говорит что в кеше есть. если локед подсчет, то функция гет просто тупо while true с задержкой в н микросекунд пока не дождется результата и снятия лока. нет
    Гмммм … а если лок-файл создался, а скрипт его создавший вылетел по каким-то причинам (таймаут, ошибка, питание) недоработав до конца. Все застрянет …
    да я думаю что тут только ттл, ибо больше никаг))) ЛИБО! чтобы время создания этого файла менялось со временем или тп, чтобы выдеть что активность какая то происходит. ну и можно в этот файл писать пид процесса апача который начал коллектить данные в кеш, если это процесса уже нет, то соответственно стирать нах и записывать свой лок файл :
    Сапожник без сапог
  • AlexB

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

    Spritz 29 апреля 2009 г. 10:07, спустя 9 часов 33 минуты 5 секунд

    О, насчет пид идея интересная, надо будет поэксперементировать …

    Чуть позже расскажу поподробнее, как у меня это примерно организовано.
  • phpdude

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

    Spritz 29 апреля 2009 г. 10:13, спустя 6 минут 9 секунд


    О, насчет пид идея интересная, надо будет поэксперементировать …

    Чуть позже расскажу поподробнее, как у меня это примерно организовано.
    давай. а то заебал флуд в разделе "для профи" ))))
    Сапожник без сапог

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