PHP: blocco esclusivo sul file mai ottenuto
Domanda
Nel mio script PHP, dopo analizzare una stringa, ho bisogno di scrivere alcuni dati in un file (dopo averlo creato se non esiste).Prima di scrivere il file, ho bisogno di blocco esclusivo per evitare problemi. Questo è il mio codice:
foreach ($elements[0] as $current) {
$file_handler = fopen($my_folder . "/" . $current . ".txt", "a");
$locked = flock($file_handler, "LOCK_EX");
while (!$locked) {
usleep(500000);
$locked = flock($file_handler, "LOCK_EX");
}
//got lock
fwrite($file_handler, $mystring . "\n");
//release lock
flock($file_handler, LOCK_UN);
fclose($file_handler);
}
return;
.
Ora, qualcosa sembra funzionare. fopen crea file, ma il mio codice sembra andare in loop dentro mentre (il file è stato creato, ma nulla è stato scritto all'interno).Cosa c'è che non va?
Soluzione
Stai passando l'argomento per il blocco come una corda invece di una costante.
Prova:
$locked = flock($file_handler, LOCK_EX);
.
Avviso le virgolette doppie mancanti intorno a Lock_ex
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow