PHP: verrouillage exclusif sur le fichier jamais obtenu
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?
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow