PHP对文件进行加锁、解锁实例
2015-01-23 00:00
531 查看
有时候你的php脚本或许需要线程安全的保证,比如进行文件写操作的时候。本文提供了文件加锁函数以及使用示例。文件加锁功能也可以用来获得独享的处理空间,防止脚本执行发生同步错误。
<?php /************************************************************************* *file lock *@author Zeal Li *http://www.zeali.net/ * *************************************************************************/ /* *lock_thisfile:获得独享锁 *@param $tmpFileStr 用来作为共享锁文件的文件名(可以随便起一个名字) *@param $locktype 锁类型,缺省为false(非阻塞型,也就是一旦加锁失败则直接返回false),设置为true则会一直等待加锁成功才返回 *@return 如果加锁成功,则返回锁实例(当使用unlock_thisfile方法的时候需要这个参数),加锁失败则返回false. */ function lock_thisfile($tmpFileStr,$locktype=false){ if($locktype == false) $locktype = LOCK_EX|LOCK_NB; $can_write = 0; $lockfp = @fopen($tmpFileStr.".lock","w"); if($lockfp){ $can_write = @flock($lockfp,$locktype); } if($can_write){ return $lockfp; } else{ if($lockfp){ @fclose($lockfp); @unlink($tmpFileStr.".lock"); } return false; } } /** *unlock_thisfile:对先前取得的锁实例进行解锁 *@param $fp lock_thisfile方法的返回值 *@param $tmpFileStr 用来作为共享锁文件的文件名(可以随便起一个名字) */ function unlock_thisfile($fp,$tmpFileStr){ @flock($fp,LOCK_UN); @fclose($fp); @fclose($fp); @unlink($tmpFileStr.".lock"); } ?>
<?php // 使用举例 $tmpFileStr = "/tmp/mylock.loc"; // 等待取得操作权限,如果要立即返回则把第二个参数设为false. $lockhandle = lock_thisfile($tmpFileStr,true); if($lockhandle){ // 在这里进行所有需要独占的事务处理。 // ... ... // 事务处理完毕。 unlock_thisfile($lockhandle,$tmpFileStr); } ?>
相关文章推荐
- PHP对文件进行加锁、解锁实例
- php对文件锁进行加锁、解锁
- PHP实现对文件锁进行加锁、解锁操作的方法
- [PHP][使用PHPCxcel制作excel表格并导出文件的用法及成功实例[已验证][原创]
- PHP文件上传实例详解!!!
- PHP实现上传文件生成小图加文字的实例
- php对gzip文件或者字符串解压实例参考
- 使用PHP对配置文件进行修改
- 利用php调用so库文件中的代码和编写so简单实例
- Ruby进行文件信息输出实例代码
- php文件操作实例——小型留言本
- PHP Zip压缩 在线对文件进行压缩的函数
- 使用PHP对配置文件进行修改
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- PHP文件上传实例详解!!!
- 水王复出:PHP文件上传实例详解!!!
- php多文件上传实例
- 用PHP与XML联手进行网站编程代码实例
- php下把数组保存为文件格式的实例应用