Keresés

Új hozzászólás Aktív témák

  • lezso6

    HÁZIGAZDA

    LOGOUT blog

    válasz Sk8erPeter #2862 üzenetére

    Nem, csak az volt, hogy ciklusba voltak ágyazva az include-ok, kábé így:

    while(iteráció) {
    include('ugyanaz a fájl.');
    }

    Én hülyeségem. :B

    HTML űrlap generálás miatt kellett, s nem ilyen volt hanem sok egymásba ágyazott ciklus, így állandóan a winyón kellett kaparnia 17 fájl után, amiből néhányat akár 70x is be kellett ágyazni. Írtam egy osztályt, ami gyorsítótárazva ágyaz be, azaz ha valamit beágyaz, akkor beírja egy változóba is a benne lévő php scriptet, majd ha mégegyszer be kéne ágyazni, akkor már a memóriából olvassa be a scriptet, s eval-lal újra lefuttatja. Persze a szkript lefutása után törlődnek a cuccok a memóriából, így ezzel "csak" 5x tempót értem el, ami még mindig 2x lassabb az egy fájlos módszernél, úgyhogy fogtam magam és becache-eltem egy fájlba az egész generált űrlapot (ami 200x gyorsabb), oszt kész, az úgyis ritkán változik :U

    class Cached_Include {
    private static $_cache;

    public static function inc($inc, &$importVars)
    {
    $inc = dirname(__FILE__) . '/' . $inc;

    if(!self::$_cache[$file]) {
    self::$_cache[$inc] = '?>' . file_get_contents($inc) . '<?';
    }

    extract($importVars, EXTR_REFS | EXTR_SKIP);

    eval(self::$_cache[$inc]);
    }

    public static function save()
    {
    file_put_contents('cache.txt', serialize(self::$_cache));
    }

    public static function load()
    {
    self::$_cache = unserialize(file_get_contents('cache.txt'));
    }
    }

    Sebességek amúgy:

    sok fájl, no optimalizálás: 1200-1500ms
    sok fájl, cachelt include: 180-200ms
    egy fájl (minden ebben van): 80-100ms
    cachelve az egész hóbelevanc: 1-10ms :DDD

  • Tele von Zsinór

    őstag

    válasz Sk8erPeter #2862 üzenetére

    Helyesbítek: a fileműveletek lassúak. Ha 1-2-10 includeod van csak, ez nem fog feltűnni, ha sokkal több, akkor viszont már jelentős visszafogó tényező.
    Például a symfony framework ez ellen úgy védekezik, hogy cacheli a teljes core rendszerét egyetlen masszív php fileba, így éles rendszerben csak az van includeolva.

Új hozzászólás Aktív témák

Hirdetés