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实现蜘蛛访问日志统计
Jul 05 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
php统计数组元素个数的方法
Jul 02 PHP
php实现简单爬虫的开发
Mar 28 PHP
PHP如何实现跨域
May 30 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
PHP children()函数讲解
Feb 03 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
CodeIgniter中实现泛域名解析
2014/07/19 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
Vue2.0生命周期的理解
2018/08/20 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
python创建进程fork用法
2015/06/04 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
python实现用户管理系统
2018/01/10 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
Python实现括号匹配方法详解
2020/02/10 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
资深生产主管自我评价
2013/09/22 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL