php 使用flock解决文件并发读写冲突的问题
|
为了确保操作的有效性和完整性,可以通过锁机制将并发状态转换成串行状态。作为锁机制中的一种,PHP的文件锁也是为了应对资源竞争。假设一个应用场景,在存在较大并发的情况下,通过fwrite向文件尾部多次有序的写入数据,不加锁的情况下会发生什么?多次有序的写入操作相当于一个事务,我们此时需要保证这个事务的完整性。 高效且保护文件在使用过程中受保护的写法是这样的【推荐】: $fp = fopen('product.csv','cb'); flock($fp,LOCK_EX | LOCK_NB); fwrite($fp,"title1,title2n"); //fputcsv($fp,array('title1','title2')); for($p = 1; $p <= 100000; $p++){ fwrite($fp,"content1,content2n"); //fputcsv($fp,array('content1','content2')); } /* http://www.manongjc.com/article/1358.html */ flock($fp,LOCK_UN); fclose($fp); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
