php使用多个进程同时控制文件读写示例


Posted in PHP onFebruary 28, 2014
<?php
/**
 * 写入数据
 * @param  [string] $path [文件路径]
 * @param  [string] $mode [文件打开模式]
 * @param  [string] $data [数据]
 * @return [bool]       
 */
function writeData($path, $mode, $data){
       $fp = fopen($path, $mode);
       $retries = 0;
       $max_retries = 100;
       do {
        if ($retries > 0) {
         usleep(rand(1, 10000));
        }
        $retries += 1;
       }while (!flock($fp, LOCK_EX) and $retries <= $max_retries);
       if ($retries == $max_retries) {
        return false;
       }
       fwrite($fp, $data."\r\n");
       flock($fp, LOCK_UN);
       fclose($fp);
       return true;
}

/**
 * 读数据
 * @param  [string] $path [文件路径]
 * @param  [string] $mode [文件打开模式]
 * @return string      
 */
function readData($path,$mode){
     $fp = fopen($path, $mode);
     $retries = 0;
     $max_retries = 100;
     do {
      if ($retries > 0) {
       usleep(rand(1, 10000));
      }
      $retries += 1;
     }while (!flock($fp, LOCK_SH) and $retries <= $max_retries);
     if ($retries == $max_retries) {
      return false;
     }
     $contents = "";
     while (!feof($fp)) {
        $contents .= fread($fp, 8192);
     }
     flock($fp, LOCK_UN);
     fclose($fp);
     return $contents;
}
writeData('D:/webServer/demo.txt','a+','this is a demo');
echo readData('D:/webServer','r+');
PHP 相关文章推荐
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
20个PHP常用类库小结
Sep 11 PHP
php中的静态变量的基本用法
Mar 20 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
php对微信支付回调处理的方法
Aug 23 PHP
php实现每日签到功能
Nov 29 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 #PHP
php命名空间学习详解
Feb 27 #PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 #PHP
php中的strpos使用示例
Feb 27 #PHP
php判断字符串在另一个字符串位置的方法
Feb 27 #PHP
php汉字转拼音的示例
Feb 27 #PHP
PHP中session变量的销毁
Feb 27 #PHP
You might like
php 伪静态之IIS篇
2014/06/02 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
微信跳一跳python代码实现
2018/01/05 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
家长建议怎么写
2014/05/15 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
师德师风自查总结
2014/10/14 职场文书
公司员工安全协议书
2014/11/21 职场文书
2015年资料员工作总结
2015/04/25 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
校园运动会广播稿
2015/08/19 职场文书
hive数据仓库新增字段方法
2022/06/25 数据库