|
Zapis do pliku
Aby poprawnie i bezpiecznie zapisywać dane do plików,
musimy poznać klika istotnych funkcji. Pierwsza najważniejsza funkcja to
fopen() - otwórz plik
$fp=fopen("atrybut1",
"atrybut2");
Funkcja ta posiada dwa atrubuty:
pierwszy to nazwa pliku, drugi to tryb otwarcia. Tryby otwarcia to po prostu
określenie czy plik ma zostać otwarty tylko do odczytu, zapisu, zamazania
itp... Nam najbardziej będą służyć na początek cztery tryby:
1. tryb "a" - otwarcie do dopisania wartości
2. tryb "r" - otwarcie do odczytu
3. tryb "r+" - otwarcie do odczytu i dopisania
4. tryb "w" - otwarcie do zapisania, poprzednia zawartość pliku
jest zamazywana
I tak na przykład aby otworzyć i dopisać np. maila do listy mailowej funkcja
fopen() będzie wyglądała tak:
$fp=fopen("lista.txt", "a");
Druga funkcja to fwrite() lub fputs() obydwie funkcje służą do zapisu danych
do plku. w kodzie będzie to więc wyglądać np. tak:
<?
$dane="tekst do wprowadzenia\n";
$file="lista.txt";
$fp=fopen("$file", "a");
fwrite($fp, $dane);
fclose($fp);
?>
w powyższym przypadku tekst zawarty w zmiennej $dane
zostanie dopisany na końcu pliku.
No tak, ale co się stanie jeśli jednocześnie Ala i Zuzia będą nam
wprowadzać dane, istnieje duża możliwość że zawartość pliku zostanie po
prostu zniszczona. Aby tego uniknąć trzeba poznać jeszcze jedną funkcję
flock() Funkcja ta również posiada dwa atrybuty, pierwszy to nazwa pliku
przechowywana już w zmiennej $fp, drugi to cyferka.
flock() pozwala nam na zablokowanie pliku na czas odczytu lub zapisu. W kodzie
będzie to teraz wyglądać tak:
<?
$dane="tekst do wprowadzenia\n";
$file="lista.txt";
$fp=fopen("$file", "a");
flock($fp, 2); //blokujemy
fwrite($fp, $dane);
flock($fp, 3); //odblokowujemy
fclose($fp);
?>
Jeszcze jedną istotną rzeczą jest to że do odczytu
drugi parametr flock() będzie wynosił 1 przy blokowaniu i 3 przy odblokowywaniu. Natomiast przy otwarciu do zapisu drugi parametr flock()
będzie wynosił 2 przy blokowaniu i 3 przy odblokowywaniu. To tyle na początek,
aby poćwiczyć na najprostszych przykładach...
dodał: Rip
|