PHP: Cerradura exclusiva en el archivo nunca obtenido
Pregunta
En mi script PHP, después de analizar una cadena, necesito escribir algunos datos en un archivo (después de crearlo si no existe).Antes de escribir archivo, necesito una cerradura exclusiva para evitar problemas. Este es mi código:
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;
Ahora, algo parece no funcionar. FOPEN CREATE FILE, PERO MI CÓDIGO PARECE INTERIOR INTERIOR EN EL INTERIOR Si (se crea el archivo, pero nada estaba escribiendo dentro).¿Qué pasa?
Solución
Está pasando el argumento para bloquear como una cadena en lugar de una constante.
intento:
$locked = flock($file_handler, LOCK_EX);
Observe las comillas dobles que faltan alrededor de lock_ex
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow