PHP如何模拟出多个进程同时写入文件

如何模拟出多进程同时写入同一文件?

使用的是一个浏览器,同时打开10个相同的这个地址。
可问题是文件写入还是写入了,没有提示无法打开。

<?php

function putFile($path, $data, $mode = 'w')
{
    $fp = fopen($path, $mode) or die("can't open file $path");
    if (flock($fp, LOCK_EX)) {
        fwrite($fp, $data);
        flock($fp, LOCK_UN);
        $length = strlen($data);

    } else {
        $length = 0;
        die(" file is locked ");
    }
    

    fclose($fp);

    return $length;
}




//run begin 
$i = 0;
while ($i < 100) {
    $i++;
    $data = date("Y-m-d H:i:s") . " \t " . $i . "\r\n";
    putFile('d.txt', $data, 'a+');
}
?>
<script>
    window.location.reload(true);
</script>
阅读 4.9k
3 个回答

如果文件锁了、它是会等待文件解锁,还是直接返回文件无法打开。我加了sleep()

锁文件时用LOCK_EX | LOCK_NB

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进