2010-06-30 2 views
14

L'errore fopen() si verifica se un file esiste, ma è attualmente bloccato con LOCK_EX?PHP controlla se il file è bloccato con flock()?

Oppure devo aprirlo e quindi provare e impostare un blocco, per determinare se ne esiste già uno?

Ho anche letto che lo sarà flock();

pausa [lo script] fino a che non ottiene il blocco per la quantità di tempo indefinito o fino a quando i tempi di script fuori

http://www.php.net/manual/en/function.flock.php#95257

Se è così, è vero questo 'pausa' può essere by-passato con;

if (!flock($f, LOCK_SH | LOCK_NB)) { 
    // file locked, do something else 
} 

risposta

10

flock() realtà non impedire di lettura/scrittura su un file, esso consente solo di "comunicare" le idee di bloccaggio ad altri script. È possibile rilevare se c'è un blocco su un file utilizzando lo snippet che hai postato.

+0

Molto apprezzato Daniel :) – TheDeadMedic