Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.036 pregleda

Najnovija ↓

Kreiranje sigurne Cache klase... 19.10.2009. u 13:04 · pre 207 meseci #1
Zelim da kreiram sigurnu Cache kalsu.

Podaci se upisuju u fajl.

Poenta sigurnosti je na kreiranju fajla i citanju fajla od strane korisnika.
Ne sme doci do gresaka prilikom upisa u fajl i prilikom citanja fajla.

Koliko sam video na internetu, mnogo se koriste flock() funkcije za zakljucavanje fajlova.
Medjutim razmatrajuci ovo na jednom mestu na ovom forumu:
http://www.elitesecurity.org/t378296-Azuriranje-cesto-posecenog-fajla

dosli smo do zakjlucka da je rename() funkcija idealna za ovu problematiku.

Interesuju me vasa iskustva i misljenja u vezi Cache sistema.

Unapred hvala.
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: Kreiranje sigurne Cache klase... 19.10.2009. u 14:17 · pre 207 meseci #2
Ne bih da zvučim demorališuće (kako glupa reč :S), ali ako praviš tu klasu samo radi potreba nekog tvog projekta, onda je bolje da se oprobaš sa nekim gotovim rešenjima, kao što je npr. APC. A ako to ipak nije slučaj, već jednostavno hoćeš da kreiraš neki svoj sistem keširanja, kojeg planiraš da objaviš, kao zaseban projekat, itd., onda pogledaj kako to radi npr. Zend Framework, odnosno, baci pogled na File adapter njegove Zend_Cache_Backend komponente. Ne verujem da će ti išta značiti taj članak u manual-u, i zato je bolje da pogledaš kod te klase. Evo npr. ove su dve ključne metode:
Code:

    protected function _fileGetContents($file)
    {
        $result = false;
        if (!is_file($file)) {
            return false;
        }
        $f = @fopen($file, 'rb');
        if ($f) {
            if ($this->_options['file_locking']) @flock($f, LOCK_SH);
            $result = stream_get_contents($f);
            if ($this->_options['file_locking']) @flock($f, LOCK_UN);
            @fclose($f);
        }
        return $result;
    }

Code:

    protected function _filePutContents($file, $string)
    {
        $result = false;
        $f = @fopen($file, 'ab+');
        if ($f) {
            if ($this->_options['file_locking']) @flock($f, LOCK_EX);
            fseek($f, 0);
            ftruncate($f, 0);
            $tmp = @fwrite($f, $string);
            if (!($tmp === FALSE)) {
                $result = true;
            }
            @fclose($f);
        }
        @chmod($file, $this->_options['cache_file_umask']);
        return $result;
    }
Re: Kreiranje sigurne Cache klase... 19.10.2009. u 15:00 · pre 207 meseci #3
Hvala Nikola, nisam imao zivaca da pretrazujem glomazne Zend klase i nadjem metode za upisivanje i citanje.

Pravim kalsu za svoj Framework koji ne zelim da objavljujem ali zalim da radim projekte pomocu njega.
Zend mi je malo glomazan pa nisam hteo da ga implementiram hocu sto brze i jednostavnije klase.

Vidim da Zend koristi samo flock. rename() ne upotrebljava.

Znaci u sustini stavlja se shered lock pri citanj fajla, sto ce onemoguciti update fajla u vreme citanja.
Isto tako stavlja se eksluzivni lock pri formiranju fajla, sto onemogucuje u citanje i pisanje u fajl dok se upis ne zavrsi.
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: Kreiranje sigurne Cache klase... 19.10.2009. u 17:12 · pre 207 meseci #4
Konta li neko zašto su prilikom upisa koristili fopen(..., 'ab+') / fseek / ftruncate umesto jednostavnije fopen(..., 'wb') ?
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme