php:bloqueio exclusivo no arquivo de nunca obteve
Pergunta
No meu script php, depois de analisar uma cadeia de caracteres, o que eu preciso para escrever dados em um arquivo (depois de criá-lo se não existir).Antes de gravar o arquivo, eu preciso de bloqueio exclusivo para evitar problemas.Este é o meu 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;
Agora, algo que parece não funcionar.fopen criar o arquivo, mas o meu código parece ir em loop no interior, enquanto (arquivo é criado, mas nada foi escrita dentro).O que há de errado?
Solução
Você está passando o argumento para o bloqueio como uma seqüência de caracteres em vez de uma constante.
Tente:
$locked = flock($file_handler, LOCK_EX);
Observe a falta de aspas duplas em torno de LOCK_EX
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow