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?

Foi útil?

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