$file
= “temp.txt”;
$fp
=
fopen
(
$file
, 'w‘
);
if
(
flock
(
$fp
, LOCK_EX)){
fwrite(
$fp
, “abc”
);
sleep(10
);
fwrite(
$fp
, “123”
);
flock
(
$fp
, LOCK_UN
);
}
fclose(
$fp
);
?>
b.php
代码如下:
<?php
$file
= “temp.txt”;
$fp
=
fopen
(
$file
, 'r'
);
echo
fread
(
$fp
, 100
);
fclose(
$fp
);
?>
运行 a.php
后,马上运行 b.php ,
可以看到输出:
abc
等 a.php
运行完后运行 b.php ,
可以看到输出:
abc
123
显然,当 a.php
写文件时数据太大,导致时间比较长时,这时 b.php 读取数据不完整,在
对 b.php
做修改
修改 b.php
为:
代码如下:
<?php
$file
= “temp.txt”;
$fp
=
fopen
(
$file
, 'r‘
);
if
(
flock
(
$fp
, LOCK_EX)){
echo
fread
(
$fp
, 100
);
flock
(
$fp
, LOCK_UN
);
}
else
{
echo
“Lock file failed…”;
}
fclose(
$fp
);
?>
运行 a.php
后,马上运行 b.php ,
可以发现 b.php
会等到 a.php
运行完成后(即 10 秒后)