Question

sur mon script PHP, après analyser une chaîne, j'ai besoin d'écrire des données dans un fichier (après le créer si cela n'existe pas).Avant d'écrire un fichier, j'ai besoin d'une serrure exclusive pour éviter les problèmes. Ceci est mon code:

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;

Maintenant, quelque chose ne semble pas fonctionner. fopen Créer un fichier, mais mon code semble aller en boucle à l'intérieur tandis que (le fichier est créé, mais rien n'était écrit à l'intérieur).Qu'est-ce qui ne va pas?

Était-ce utile?

La solution

Vous passez l'argument pour verrouiller comme une corde au lieu d'une constante.

Essayez:

$locked = flock($file_handler, LOCK_EX);

Notez que les citations doubles manquantes autour de Lock_ex

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top