我想创建一个简单的方法来将字符串写入日志文件,由于文件可能同时由不同的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);
}
以上代码有问题吗?
我使用error_log('我的日志消息',3,$logFile);为了同样的目的。我在peek时间达到每秒300个写请求,持续了大约两个月,仍然没有任何文件锁定问题。