background image

 

$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 秒后)