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

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>

ab -n 1000 -c 100 -r http://yours.com/


锁文件时用LOCK_EX | LOCK_NB


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

【热门文章】
【热门文章】