49181 skanuj0194 (5)

49181 skanuj0194 (5)



206 PHP i MySQL dla każdego

Aktualna pozycja w pliku może zostać zmieniona za pomocą funkcji fseek. Jej schematyczne wywołanie ma postać: fseek(deskryptor. i le[. skąd])

gdzie deskryptor to deskryptor pliku zwrócony przez funkcję fopen, i le określa liczbę bajtów przesunięcia, natomiast skąd — pozycję, od której nastąpi przesunięcie. Parametr skąd jest opcjonalny i został wprowadzony w PHP4 (wersja 4.0.0). Może on przyjmować następujące wartości:

♦    SEEK_SET — oznaczająca przesunięcie względem początku pliku,

♦    SEEK_CUR — oznaczająca przesunięcie względem pozycji bieżącej,

♦    SEEK_END — oznaczająca przesunięcie względem końca pliku.

Jeżeli parametr skąd nie zostanie podany, funkcja zachowa się tak, jakby miał on wartość SEEK_SET. Przykładowo, jeśli zmienna fd zawiera deskryptor pliku zwrócony przez metodę fopen, to wywołanie:

♦    fseek ($fd. 0) — ustawi wskaźnik na początku pliku,

♦    fseek($fd. 0. SEEK_SET) — ustawi wskaźnik na początku pliku,

♦    fseek($fd. 0. SEEK_END)—ustawi wskaźnik na końcu pliku,

♦    fseek($fd. 20. SEEK_SET)—ustawi wskaźnik na 20 bajcie pliku,

♦    fseek($fd. -10, SEEK_CURR) — ustawi wskaźnik na 10 bajcie przed aktualną pozycją w pliku,

♦    fseek($fd, 10. SEEK_CURR) — ustawi wskaźnik na 10 bajcie za aktualną pozycją w pliku,

♦    fseek($fd, -10. SEEK_END)—ustawi wskaźnik na 10 bajcie przed końcem pliku.

Funkcja fseek zwraca wartość 0, jeżeli jej wywołanie zakończyło się sukcesem, lub wartość 1 — w przeciwnym wypadku.

Ostatnia z omawianych funkcji — rewind — przesuwa wskaźnik pozycji w pliku na pozycję 0, czyli na początek pliku. Jej wywołanie ma zatem takie samo znaczenie, jak wywołanie fseek($fd. 0. SEEK_SET). Funkcja rewind przyjmuje tylko jeden argument, którym jest deskryptor pliku, i zwraca wartość true, jeżeli jej wywołanie zakończyło się sukcesem, lub wartość fal se, jeżeli ustawienie wskaźnika nie powiodło się.

Synchronizacja dostępu

Przechowywanie danych w plikach może przysporzyć nam wielu problemów, o ile nie zadbamy o prawidłową synchronizację dostępu. Co się bowiem stanie, jeśli naszą witrynę odwiedzi jednocześnie kilka osób i wszystkie wywołają skrypt operujący na danych zapisanych w jednym z plików? Rezultat niestety będzie całkowicie nieprzewidywalny. Dane mogą zostać zapisane poprawnie, ale również mogą zostać utracone lub przemieszane ze sobą. Nie będzie to miało tak wielkiego znaczenia, kiedy skrypt obsługuje jedynie licznik odwołań do strony (najwyżej zgubimy część odwołań), jednak


Wyszukiwarka

Podobne podstrony:
skanuj0192 (5) 204 PHP i MySQL dla każdego widoczny na rysunku 7.7. Formularz tworzony jest za pomoc
skanuj0359 (2) 374 PHP i MySQL dla każdego go zapisać w pliku dodaj.html), natomiast jego wygląd obr
69955 skanuj0359 (2) 374 PHP i MySQL dla każdego go zapisać w pliku dodaj.html), natomiast jego wygl
37896 skanuj0481 (2) 498 PHP i MySQL dla każdego Rysunek 19.5. Lista adresów subskrybentów będąca wy
skanuj0161 (9) 172 PHP i MySQL dla każdego Zwraca ona ciąg strl, z którego począwszy od znaku o inde
skanuj0163 (9) 174 PHP i MySQL dla każdego Listing 6.12. Wykorzystanie funkcji strtok <?php $str

więcej podobnych podstron