You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP的file_get_contents函数是否会忽略文件锁?

file_get_contents 与 PHP flock 文件锁的行为细节

我特意去查阅了PHP官方手册中file_get_contents的相关内容,手册正文里完全没有提及该函数在文件锁方面的行为。不过在手册的用户评论区,用户Chris分享了一个重要的实践结论:

file_get_contents通常不遵循PHP的flock建议性锁

要让它配合锁机制工作,需要手动添加代码请求共享锁,我已经测试过这个方法是可行的,示例代码如下:

// 先打开文件句柄
$fileHandle = fopen('target_file.txt', 'r');
// 请求共享读锁(LOCK_SH),会阻塞直到获取到锁
if (flock($fileHandle, LOCK_SH)) {
    // 此时读取文件内容,就能遵循锁的约束
    $fileContent = file_get_contents('target_file.txt');
    // 完成读取后释放锁
    flock($fileHandle, LOCK_UN);
}
// 关闭文件句柄
fclose($fileHandle);

另外我自己做了额外测试,发现哪怕文件已经通过flock()加上了锁,直接调用file_get_contents还是能绕过这个锁读取内容——这也验证了Chris的说法,file_get_contents本身不会主动识别和遵循flock的建议性锁。

内容的提问来源于stack exchange,提问作者humanityANDpeace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:14:36