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几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
php7 图形用户界面GUI 开发示例
Feb 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
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
python版本的读写锁操作方法
2016/04/25 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
Python列表解析操作实例总结
2020/02/26 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
经济职业学院毕业生自荐书
2014/03/17 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
我的生日感言
2015/08/03 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
Python学习之包与模块详解
2022/03/19 Python