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?

È stato utile?

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
scroll top