高负载会导致 PHP 无法写入文本文件吗?

我有一个 PHP 脚本,它处于高负载状态,每秒有多个调用(来自另一台计算机)。它在 IIS 服务器上的 PHP 5.5.14 上运行。使用脚本记录每个请求和响应

file_put_contents('log_2019-09-12.txt', $msg, FILE_APPEND);

每个请求和响应也记录在客户端计算机上,我偶尔会看到这样的 PHP 错误:

PHP ERROR 2: file_put_contents(C:\\WWW\\project-x\\logs\\log_2019-09-11.txt): failed to open stream: Permission denied

这些似乎大约每 140 分钟发生一次,通常连续 8 个,然后事情又工作了约 140 分钟,每秒处理几个请求并成功记录到日志文件。

可能是 PHP 通常会写入内存文件,然后实际上每隔 140 分钟将内容写入磁盘,这就是导致此错误的原因吗?如果是这样,我该如何规避它?


哆啦的时光机
浏览 108回答 2
2回答

海绵宝宝撒

Magnus Eriksson 在评论中回答LOCK_EX在编写时尝试添加参数:file_put_contents($file, $text, FILE_APPEND|LOCK_EX)来自手册:the LOCK_EX flag to prevent anyone else writing to the file at the same time

九州编程

你没有权限写这个。mkdir($path, 0755, true) 在你写的时候检查你是否有权限。
打开App,查看更多内容
随时随地看视频慕课网APP