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 和 HTML
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
php 表单数据的获取代码
Mar 10 PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 PHP
PHP中替换换行符的几种方法小结
Oct 15 PHP
深入PHP autoload机制的详解
Jun 09 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
PHP 并发场景的几种解决方案
Jun 14 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
js尾调用优化的实现
2019/05/23 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python中hashlib模块用法示例
2017/10/30 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
机关财务管理制度
2014/01/17 职场文书
商业用房租赁协议书
2014/10/13 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
争做文明公民倡议书
2019/06/24 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript