php文件读写锁

本文介绍了一个使用PHP实现的文件加锁示例,通过flock函数来防止多个进程同时写入同一个文件,有效避免数据冲突。文章展示了如何根据不同模式(读/写)设置文件操作模式,并使用sleep模拟长时间运行的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$file = fopen("test.txt", $fileOpenMode);
flock($file, $lockMode) or die("Can't lock");
//...
flock($file, LOCK_UN);
fclose($file);

$fileOpenMode:"r"(读);"r+"(写)(不能用"w",否则由于先打开再加锁,打开后文件内容已经清空了)

$lockMode:LOCK_SH(读);LOCK_EX(写)

<?php
sleep(3);
return;
$mode = $_GET['mode'];
switch($mode){
case "r":
    $fileOpenMode = "r";
    $lockMode = LOCK_SH;
    $sleepTime = 3;
    break;
case "w":
    $fileOpenMode = "r+";
    $lockMode = LOCK_EX;
    $sleepTime = 5;
    break;
}

echo "QueryTime:" . time() . "<br>";
$startTime = time();
echo "Mode:" . $mode . "<br>";
$file = fopen("test.txt", $fileOpenMode);
flock($file, $lockMode) or die("Can't lock");
sleep($sleepTime);
switch($mode){
case "r":
    echo "Data:" . fgets($file) . "<br>";
    break;
case "w":
    echo "Data:" . "(Written)" . "<br>";
    fputs($file, "Write data info file at " . time());
    break;
}
flock($file, LOCK_UN);
fclose($file);
echo "Time:" . (time()-$startTime) . "<br>";
echo "Now:" . time() . "<br>";
?>

 

转载于:https://www.cnblogs.com/turtlegood/p/4355721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值