欢迎您访问九擎网络科技官网,今天是 2019年01月08日 星期二
|  手机版 |   表格下载 |   客户留言 |   备案申请   建站申请 建站服务热线:0379-8088 8006

洛阳九擎网络科技公司

九擎新闻 建站资讯 网站建设 网站优化 微信营销 软件开发 移动开发 互联网+
主页 > 新闻动态 > 软件开发 >

PHP对文件进行加锁、解锁实例代码

九擎科技2018-07-13

  有时候你的php脚本或许需要线程安全的保证,比如进行文件写操作的时候。本文提供了文件加锁函数以及使用示例。文件加锁功能也可以用来获得独享的处理空间,防止脚本执行发生同步错误。

  代码如下:

  <?php

  /*

  *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);

  }

  ?>

 
  希望能为您带来帮助,更多详情请继续关注我们洛阳微信微站

(非特殊说明,本文版权归原作者所有,转载请注明出处 )


九擎科技致力于为企业提供创意设计、网站建设、定制开发、运营及推广等全方位服务。
联系电话:0379-8088 8006
联系手机:15515315959
想在手机上、随时获取互联网前沿、设计资讯以及各种意想不到的"福利"吗?通过扫描二维码快速添加

分享到微信QQ空间QQ好友腾讯微博新浪微博0
上一篇:C#学习日志之数据类型
返回资讯列表
下一篇:Python能用来做什么?这3大主要用途你一定要知道!
23日
2018年06月

企业门户网站建设有哪些必须要注重的要点?

当前,对于一个企业来说,建设企业门户网站的主要目的包括以下方面:宣传企业品牌形象、提升企业知名度;发布产品信息、获取潜在客户;寻求合作机...

09日
2018年07月

网站优化完成,资讯恢复更新

九擎科技网站经历了长达一周的优化维护,今天终于恢复正常,资讯将恢复更新,小伙伴们来试试看是不是有不同呢...

16日
2018年07月

Java对象和类

Java作为一种面向对象的语言。支持以下基本概念 *继承 *多态 *封装 *抽象 *类 *对象 *实例 *方法 *重载 对象:对象是类的一个实例。 类:类是一类对象抽象...

20日
2018年06月

网站建设细节上的注意有哪些

网站建设工作在建设者看来是一件十分简单的事情,但是任何事情想要做好做大却是很难的。 洛阳网站建设公司 就根据网站建设和运营举例说明,网站运...

23日
2018年06月

APP开发过程中都需要解决哪些问题?

如今,APP开发成为了每个商业领域,在移动端较好的获取潜在客户和获得发展的方式。同时在发展迅速的移动行业中,如果想要迅速成为移动端的用户入口...

10日
2018年07月

关键词排名提升工具快速排名上首页真的有效吗

关键词排名是SEO优化工作的核心工作,网站还有获得排名后才能够获得搜索引擎的流量,进而流量才能够转化为用户或者价值,这一点在企业 网站优化 工...

12日
2018年07月

C#学习日志之数据类型

数据类型: 一、值类型 1、 整数类型: sbyte(有符号8位)、byte(无符号8位)、short(有符号16位)、ushort(无符号16位)、int(有符号32位)、uint(无符号...

27日
2018年06月

亟待攻克核心技术:算法欠账多 国产“大脑”爱出错

亟待攻克的核心技术 两台机器人分别控制双层托盘,让其不断地倾斜、转动,另一台机器人控制机械臂在托盘上十个障碍物间不停地穿行而不受阻碍。这段...

中国(河南)自由贸易试验区洛阳片区涧西区秦岭路卓阳科技园内 0379-8088 8006 0379-8088 8006 Copyright © 2005-2018 九擎科技 版权所有 豫ICP备17033118号-1
友情链接: 九擎科技