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获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
PHP使用递归按层级查找数据的方法
Nov 10 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
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
轻松实现php文件上传功能
2017/02/17 PHP
javascript列表框操作函数集合汇总
2013/11/28 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
JS实现拼图游戏
2021/01/29 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
python线程池如何使用
2020/05/28 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
打印机墨盒:123Inkjets
2017/02/16 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
毕业设计计划书
2014/01/09 职场文书
村党支部换届选举方案
2014/05/02 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
小学四年级学生评语
2014/12/26 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python