flock
Sistema di bloccaggio file
Descrizione
Il PHP supporta un tecnologia portabile per bloccare file completi in modalità advisory (tutti i programmi che vi accedono, devono usare lo stesso tipo di bloccaggio o non funzionerà).
flock opera su handle che deve essere un puntatore ad un file aperto. operation può assumere uno dei valori seguenti:
Per acquisire una chiave condivisa (in lettura), imposta operation a LOCK_SH (usa 1 prima di PHP 4.0.1). Per acquisire una chiave esclusiva (in scrittura), imposta operation a LOCK_EX (usa 2 prima di PHP 4.0.1). Per rilasciare una chiave (condivisa o esclusiva), imposta operation a LOCK_UN (usa 3 prima PHP 4.0.1). Se non vuoi che flock blocchi mentre, imposta come LOCK_NB (4 prima di PHP 4.0.1) operation.
flock ti permette di utilizzare un semplice modello di
lettura/scrittura che in teoria può essere usato su qualsiasi piattaforma
(inclusi molti sistemi Unix e anche Windows). Il terzo argomento (opzionale)
può essere impostato a true se la chiave puo bloccare (EWOULDBLOCK
errno condition). Il blocco è realizzato anche da fclose
(che è anche richiamata automaticamente quando lo script termina).
Return success
Esempio di uso di flock <?php $fp = fopen("/tmp/lock.txt", "w+"); if (flock($fp, LOCK_EX)) { // Esegue un lock esclusivo fwrite($fp, "Write something here\n"); flock($fp, LOCK_UN); // rilascia il lock } else { echo "Non si riesce ad eseguire il lock del file !"; } fclose($fp); ?>
FAT e i suoi derivati e pertanto in tali ambienti restituirà sempre
false (questo è vero soprattutto per gli utenti di
Windows 98).