Como evitar que o script PHP seja executado mais de uma vez?

Atualmente, tentei impedir umaonlytask.php script da execução mais de uma vez:

$fp = fopen("/tmp/"."onlyme.lock", "a+");
if (flock($fp, LOCK_EX | LOCK_NB)) {
  echo "task started\n";
  //
    while (true) {
      // do something lengthy
      sleep(10);
    }
  //
  flock($fp, LOCK_UN);
} else {
  echo "task already running\n";
}
fclose($fp);

e há um cron job para executar o script acima a cada minuto:

* * * * * php /usr/local/src/onlytask.php

Isso funciona por um tempo. Depois de alguns dias, quando faço:

ps auxwww | grep onlytask

Eu descobri que existemdois instâncias em execução! Não três ou mais, nem um. Eu matei um dos casos. Depois de alguns dias, hádois instâncias novamente.

O que há de errado no código? Existem outras alternativas para limitar apenas uma instância do onlytask.php em execução?

p.s. minha/tmp/ a pasta não está limpa.ls -al /tmp/*.lock mostre que o arquivo de bloqueio foi criado no primeiro dia:

-rw-r--r--  1 root root    0 Dec  4 04:03 onlyme.lock

questionAnswers(6)

yourAnswerToTheQuestion