Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kreiranje sigurne Cache klase...

[es] :: PHP :: Kreiranje sigurne Cache klase...

[ Pregleda: 1451 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zgas

Član broj: 74613
Poruke: 334
*.ptt.rs.

Sajt: odbrojavanje.com


Profil

icon Kreiranje sigurne Cache klase...19.10.2009. u 12:04 - pre 176 meseci
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.
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Kreiranje sigurne Cache klase...19.10.2009. u 13:17 - pre 176 meseci
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;
    }
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.rs.

Sajt: odbrojavanje.com


Profil

icon Re: Kreiranje sigurne Cache klase...19.10.2009. u 14:00 - pre 176 meseci
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.
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.eunet.rs.



+19 Profil

icon Re: Kreiranje sigurne Cache klase...19.10.2009. u 16:12 - pre 176 meseci
Konta li neko zašto su prilikom upisa koristili fopen(..., 'ab+') / fseek / ftruncate umesto jednostavnije fopen(..., 'wb') ?
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

[es] :: PHP :: Kreiranje sigurne Cache klase...

[ Pregleda: 1451 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.