如何模拟出多进程同时写入同一文件?
使用的是一个浏览器,同时打开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()