Søger du en specifik kategori?

 



Oprettet tor. d. 12. marts 2009 kl. 15:18

limemedia
Guidens karaktér
1
2
3
4
5

Simpel caching med PHP

Med udbredelsen af WYSIWYG editorer glemmes ofte overvejelser om database optimering vha. caching. Hermed en simpel løsningsmodel.
Med udbredelsen af WYSIWYG editorer til manipulering af indholdet på websider, ser jeg ofte at udviklerne udelukkende gemmer side data i databasen, og ved hver visning af siderne henter indholdet fra databasen - derved skabes et unødigt load på database niveauet, som kan undgås. Ved at undgå dette, skabes der ekstra "kræfter" til fx. søgninger der udføres hurtigere m.v. En god tommelfinger regel er, at alt der kan køres udenom databasen, bør køres udenom.

Jeg mener hermed ikke, at vi skal droppe databasen i ethvert WYSIWYG tool - hvad jeg mener er, at når vi som indholds redaktører gemmer en side i toolet, så gemmes både en version i databasen til nem tilgang når vi retter, men samtidig gemmes en version på disken, som vores webapplikation henter fremfor at hente i databasen. Vores database laver således intet når brugeren henter siden, og arbejder kun når redaktøren retter siden.

Ved at lade redaktørens version være i databasen, tillader vi søgninger i indholdet, som pga den formindskede load på serveren kan laves "tungere" / mere avanceret - smart ik ?

Hvad udviklere ofte glemmer er, at man kan gemme disse "cachede" filer som PHP filer, og dermed stadig have dynamisk indhold på siderne eller andre database kald - ved at bruge include til at inkludere den cachede fil, eksekveres filen inden den vises, således at enhver PHP kode i filen eksekveres

Nok snak, hermed et kodeeksempel der giver tre funktioner, loadCache, saveCache og deleteCache - navnene burde være ret sigende. Jeg bruger personligt ikke loadCache da den ikke eksekverer indhold fremfor en simpel include, men jeg har den i mit "bibliotek" for god ordens skyld.

<?php
    function loadCache($dir, $file) {
        if (!is_readable($dir.$file)) {
            return false;
            exit;
        } else {
            $buffer = '';

            $fd = fopen ($dir.$file, "r");
            while (!feof($fd)) $buffer .= fgets($fd);
            fclose ($fd);
        }

        return $buffer;
    }

    function saveCache($dir, $file, $cache, $backupdir='') {
        # 0x1  : File cached
        # 0x2  : Directory doesnt exist
        # 0x4  : Directory not writable
        # 0x8  : Backup directory doesnt exist
        # 0x10 : Backup directory not writable

        if (!is_dir($dir)) $status += 0x2;
        else if (!is_writable($dir)) $status += 0x4;
        else {
            $cachefile = $dir.$file;
            $backupfile = $backupdir.$file;

            if ($backupdir && file_exists($cachefile)) {
                if (!is_dir($backupdir)) $status += 0x8;
                else if (!is_writable($backupdir)) $status += 0x10;
                else {
                    if (file_exists($backupfile)) unlink($backupfile);
                    rename($cachefile, $backupfile);
                }
            }

            $fp = fopen($cachefile, 'w');
            fputs($fp, $cache);
            fclose($fp);

            $status += 0x1;
        }

        return $status;
    }
   
    function deleteCache($dir, $file) {
        if (file_exists($dir.$file)) unlink($dir.$file);
        return true;
    }
?>


Mere information om brugen af bit værdier til rapportering af fejlkoder : http://www.eksperten.dk/ (...)

Skrevet tir. d. 09. november 2004 kl. 11:24| #1


Skrevet tor. d. 11. november 2004 kl. 13:45| #2

olebole (214.023 point)
Kanon, Lars! En alt for længe ventet artikel ... det er hårdt at kæmpe mod dynamisk overkill helt alene  ;o)
Måske, du kunne udvidde den lidt, så mindre øvede også kan få noget ud af den - men at kalde artiklen 'dårligt formuleret' er en decideret dårlig formulering.
At forklare metoden helt fra Adam og Eva vil dog også være en skidt idé. Har man brug for dette, kan man sagtens læse artiklen. Kan man ikke forstå den, har man med højglansforkromet statsgaranti en bunke andet at optimere - og som er vigtigere at få styr på  :)
/mvh

Skrevet fre. d. 12. november 2004 kl. 08:59| #3

jensgram (38.599 point)
www.jensgram.dk
Stille og rolig ;)

Skrevet fre. d. 12. november 2004 kl. 10:15| #4

Jeg sidder med den der "hvor er resten henne" fornemmelse.

Jeg synes artiklen tager afsæt i for mange antagelser, tag hellere fat på en konkret måde folk laver sider på, f.eks. index.php?side=etellerandet og forklar derfra.

Skrevet fre. d. 12. november 2004 kl. 13:03| #5

xyborx (22.435 point)
Jeg er enig med el_barto. Der mangler noget. Bl.a. en dybere forklaring af hvad funktionerne gør eller i det mindste hvordan de bruges.

Skrevet søn. d. 02. januar 2005 kl. 07:12| #6


Skrevet tor. d. 20. januar 2005 kl. 10:10| #7

homsabu (17.098 point)
enig med el_barto og xyborx!
alt for lidt kommentarer og forklaring - man kunne f.eks ha' kommenteret koden linie for linie med // kommentarer...
Hvis man ved hvad der snakkes om er den fin nok, men IMO ikke 5 point værd!

Skrevet ons. d. 25. oktober 2006 kl. 21:36| #8


Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
12 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger