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 相关文章推荐
set_include_path在win和linux下的区别
Jan 10 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
php创建无限级树型菜单
Nov 05 PHP
PHP环形链表实现方法示例
Sep 15 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 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设计模式 Factory(工厂模式)
2011/06/26 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
javascript preload&amp;lazy load
2010/05/13 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
入党转预备思想汇报
2014/01/07 职场文书
打架检讨书500字
2014/01/29 职场文书
2014年派出所工作总结
2014/11/21 职场文书