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
PHP脚本中include文件出错解决方法
Nov 20 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
PHP引用的调用方法分析
Apr 25 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 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 获取mysql数据库信息代码
2009/03/12 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
windows下安装Python和pip终极图文教程
2017/03/05 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
Android面试题附答案
2014/12/08 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
银行领导证婚词
2014/01/11 职场文书
银行类自荐信
2014/02/04 职场文书
企业文化演讲稿
2014/05/20 职场文书
计算机软件专业求职信
2014/06/10 职场文书
金融管理专业求职信
2014/07/10 职场文书
商场周年庆活动方案
2014/08/19 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
七年级上册生物的课件
2019/08/07 职场文书
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL