5

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

例如

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);
}

上面的代码有问题吗?

4

1 回答 1

0

我正在使用error_log ('My log message',3,$logFile); 出于同样的目的。我在窥视时间达到每秒 300 个写入请求,大约两个月,文件锁定仍然没有任何问题。

于 2013-03-20T13:26:41.793 回答