Blokowanie plików podczas odczytu (flock)

Założenie: Zapobieżenie konfliktom dostępu do pliku podczas jednoczesnego odczytu przez wiele procesów, poprzez blokowanie pliku.

Krok po kroku:

  1. Otwarcie pliku: Otwieramy plik w trybie odczytu za pomocą funkcji fopen(). Jeśli plik nie istnieje, funkcja zwróci false.
  2. 
    $plik = fopen('dane.txt', 'r');
    if ($plik === false) {
        die('Błąd otwarcia pliku!');
    }
    				
  3. Blokowanie pliku: Używamy funkcji flock(), aby zablokować plik w trybie współdzielonym (LOCK_SH). Oznacza to, że inne procesy mogą odczytywać plik, ale nie mogą go modyfikować.
  4. 
    if (!flock($plik, LOCK_SH)) {
        die('Błąd blokowania pliku!');
    }
    				
  5. Odczyt danych: Odczytujemy zawartość pliku za pomocą funkcji fread() lub innych odpowiednich funkcji.
  6. 
    $zawartosc = fread($plik, filesize('dane.txt'));
    echo $zawartosc;
    				
  7. Zwolnienie blokady: Po zakończeniu odczytu zwalniamy blokadę za pomocą funkcji flock() z parametrem LOCK_UN.
  8. 
    flock($plik, LOCK_UN);
    fclose($plik);
    				

Pamiętaj o obsłudze błędów! Funkcje fopen() i flock() mogą zwrócić false w przypadku wystąpienia problemów. Zawsze sprawdzaj zwracane wartości.

Ten przykład pokazuje podstawowe użycie funkcji flock() do blokowania plików podczas odczytu. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi trybami blokowania.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *