PHP文件操作实现代码分享

2019-04-08 22:59:30于丽

1. <?php
2.  
3. $file_name = "data.dat";
4. // 要读取的文件的绝对路径: homedata.dat
5.  
6. $file_pointer = fopen($file_name, "r");
7. // 打开文件,8. "r" 是一种模式,9. 或者说我们要进行的操作方法,10. 详见本文后面的介绍
11.  
12. $file_read = fread($file_pointer, filesize($file_name));
13. // 通过文件指14. 针读取文件内容
15.  
16. fclose($file_pointer);
17. // 关闭文件
18.  
19. print "读取到的文件内容是: $file_read";
20. // 显示文件内容
21. ?>
22.  

写文件:
PHP代码:

1. <?php
2.  
3. $file_name = "data.dat";
4. // 绝对路径: homedata.dat
5.  
6. $file_pointer = fopen($file_name, "w");
7. // "w"是一种模式,8. 详见后面
9.  
10. fwrite($file_pointer, "what you wanna write");
11. // 先把文件剪切12. 为0字节大小,13. 然后写入
14.  
15. fclose($file_pointer);
16. // 结束
17.  
18. print "数据成功写入文件";
19.  
20. ?>
21.  

追加到文件后面:
PHP代码:

1. <?php
2.  
3. $file_name = "data.dat";
4. // 绝对路径: homedata.dat
5.  
6. $file_pointer = fopen($file_name, "a");
7. // "w"模式
8.  
9. fwrite($file_pointer, "what you wanna append");
10. // 不11. 把文件剪切12. 成0字节,13. 把数据追加到文件最后
14.  
15. fclose($file_pointer);
16. // 结束
17.  
18. print "数据成功追加到文件";
19.  
20. ?>
21.  

以上只是简单介绍,下面我们要讨论一些更深层的。
有时候会发生多人写入的情况(最常见是在流量较大的网站),会产生无用的数据写入文件, 例如:
info.file文件内容如下 ->
|1|Mukul|15|Male|India (n)
|2|Linus|31|Male|Finland (n)
现在两个人同时注册,引起文件破坏->
info.file ->
|1|Mukul|15|Male|India
|2|Linus|31|Male|Finland
|3|Rob|27|Male|USA|
Bill|29|Male|USA
上例中当PHP写入Rob的信息到文件的时候,Bill正好也开始写入,这时候正好需要写入Rob纪录的'n',引起文件破坏。
我们当然不希望发生这样的情况, 所以让我们看看文件锁定:
PHP代码:

1. <?php
2.  
3. $file_name = "data.dat";
4.  
5. $file_pointer = fopen($file_name, "r");
6.  
7. $lock = flock($file_pointer, LOCK_SH);
8. // 我使用4.0.2,9. 所以用LOCK_SH,10. 你可能需要直接写成 1.
11.  
12. if ($lock) {
13.  
14. $file_read = fread($file_pointer, filesize($file_name));
15. $lock = flock($file_pointer, LOCK_UN);
16. // 如果版本小于PHP4.0.2,17. 用 3 代替 LOCK_UN
18.  
19. }
20.  
相关文章 大家在看