在PHP中获取文件锁时我应该使用循环吗?

时间:2013-03-19 17:10:05

标签: php

我想创建一个将字符串写入日志文件的简单方法,并且由于该文件可能同时由不同的Web服务器进程写入,因此原子性需要文件锁定。

e.g。

function log_to_file($message)
{
   $fp = fopen("/tmp/lock.txt", "r+");

   while (!flock($fp, LOCK_EX)) {
     sleep(1); // Sleep for 1 second and try again
   }

   fwrite($fp, $message);
   fflush($fp);            
   flock($fp, LOCK_UN);    // release the lock

   fclose($fp);
}

上述代码有问题吗?

1 个答案:

答案 0 :(得分:0)

我正在使用error_log('我的日志消息',3,$ logFile);出于同样的目的。我在偷看时间内每秒达到300次写入请求,大约两个月,并且文件锁定仍然没有任何问题。