Home   FORUM   Toplista   HTML   CSS   JavaScript   PHP   DIZAJN   SEO   Mapa
KONTAKT
izuzetan[at]gmail.com






TOP LISTA SAJTOVA

Ostale funkcije za rad sa fajlovima

File_exists proverava da li postoji fajl a da se fajl ne otvori. Evo primera:

if (file_exists("podaci.txt")) echo "fajl postoji";
else echo "fajl ne postoji";

Rezultat bi bio u našem slučaju ako postoji fajl "podaci.txt":

fajl postoji

Funkcija za utvrdjivanje veličine fajla u bajtima je filesize. Evo primera.

echo filesize ("podaci.txt");

Rezultat bi bio u našem slučaju ako postoji fajl "podaci.txt":

61

Filesize može da se koristi u kombinaciji recimo sa fread da isčita celi fajl kao što smo videli u prethodnom naslovu .

Funkcija za brisanje fajla je unlink. Brisanje fajla se vrši na sledeći način:

unlink ("podaci.txt");

Funkcija ne može obrisati fajl ukoliko nemate ovlašćenje pristupu fajlu ili ako ne postoji fajl.

Zaključavanje fajla vršise funkcijom flock. Ako na primer dva posetioca sajta upisuje podatke u isti fajl, to jest zajedno pozivaju funkciju fopen postavlja se pitanje šta će biti u tom slučaju zapisano u fajl? Upis od jednog pa za njim upis od drugog korisnika, ili možda upis drugog pa za njim upis prvog, ili samo jedan upis od njih dvoje, ili dva izmešana upisa? Odgovor je najčešće nepredvidljiv! Takav problem se prilično rešava zatvoranjem fajla funkcijom flock nakon otvaranja fajla, ali pre čitanja ili upisa u fajl. Tako se rešava problem sa upisom podata u fajl ali se otvaraju novi problemi. Naime, kad se zaključa fajl onda više niko nema pristup tom fajlu sve dok program ne otključa fajl. Znači zaključavanjem fajla pravi se lista čekanja za pristup fajlu. Ukoliko su mnogi posetioci sajta na toj listi vreme čekanja se povećava pa neki zato mogu i da odustanu od zahteva za tim podacima. Takodje je nejasno pitanje šta će se odigrati ako dva ili više posetioca u istom deliću sekunde, to jest u vremenu dok traje jedan takt procesora servera, istovremeno zaključaju fajl, što nije nemoguće ako je sajt jako posećen? U tom slučaju će opet i jednom i drugom biti dozvoljeno istovremeno upisivanje u fajl, što nas opet vraća na prvobitan problem kako će upis izgledati, da li izmešano, itd itd. Znači iako je vreme mnogostruko skraćeno zaključavanjem fajla ipak se potpuno ne isključuje mogućnost problema pogrešnog upisivanja u fajl. Zaključavanje se vrši sledećim pisanjem:

bool flock (int $fp, operacija [, int &blokiranje]);

Operacije mogu biti sledeće oznake:

  • LOCK_SH - Zaključava za zajedničko čitanje.
  • LOCK_EX - Zaključava za zajedničko pisanje. Odnosno omogućava samo jednom da piše.
  • LOCK_UN - Otključavanje fajla (zajedničku ili ekskluzivnu).
  • LOCK_NB - Ako ne želite flock() blokiranje prilikom zaključavanja datoteke. (Nije podržan od Windows servera)
Treći opcioni parametar "blokiranje" postavlja se na TRUE ako dodje do greške u zaključavanju. Ako nameravate koristiti funkciju flock, dodajte je svim skriptama koje otvaraju odredjeni fajl inače je zaključavanje beskorisno. Funkcija flock ne radi sa NFS i FAT, jer oni ne podržavaju zaključavanje.

Zbog svih ovih problema koje smo napomenuli u ovom delu (a nisu jedini) je i izmišljen na kraju krajeva sistem za upravljanje bazama podataka.

Evo jednog primera zaključavanja fajla:

<?php
$fp=fopen("podaci2.txt", "w");
if(!flock($fp, LOCK_EX)) {
   echo "Nismo mogli da zakljucamo fajl";
   exit;
}
$ime=array("Milan","Pera","Dejan","Slavko");
$visina=array(176,185,171,189);
$tezina=array(70,95,81,105);
for ($i=0; $i<4; $i++) {
   $stringunos=$i."\t".$ime[$i]."\t".$visina[$i]."\t".$tezina[$i]."\n";
   fwrite($fp, $stringunos);
}
fclose($fp);
?>

Ovim kodom smo u fajlu "podaci2.txt" smestili odredjene podatke ali tek nakon njegovog zaključavanja tako da neko drugi dok mi ubacujemo podatke ne može da ima pristup tom fajlu.

Nakon funkcije fclose($fp) se fajl otključava i njegovom pristupu mogu imati i drugi posetioci. Još jednom napominjem, ako nameravate koristiti funkciju flock za odredjeni fajl onda je dodajte nakon svih funkcija koje otvaraju taj fajl (fopen i slične) inače je zaključavanje beskorisno.

Copyright © 2010 BUbaj. Powered By bubaj.com
PHP    PHP sintaksa    Fajl    Niz    String    Funkcija    Objektno programiranje    MySQL    Unos fajla    Datum    Forme    Sesija    Registracija