/**
* 删除非空目录里面所有文件和子目录
* @param string $dir
* @return boolean
*/
function fn_rmdir($dir) {
//先删除目录下的文件:
$dh = opendir($dir);
while ($file = readdir($dh)) {
if ($file != "." && $file != "..") {
$fullpath = $dir . "/" . $file;
if (is_dir($fullpath)) {
fn_rmdir($fullpath);
} else {
unlink($fullpath);
}
}
}
closedir($dh);
//删除当前文件夹:
if (rmdir($dir)) {
return true;
} else {
return false;
}
} /**
* PHP高效读取文件
* @param string $filepath
* @return string
*/
function fn_tail($filepath) {
if (file_exists($filepath)) {
$fp = fopen($filepath, "r");
$str = "";
$buffer = 1024; //每次读取 1024 字节
while (!feof($fp)) {//循环读取,直至读取完整个文件
$str .= fread($fp, $buffer);
}
return $str;
}
} /**
* PHP高效写入文件(支持并发)
* @param string $filepath
* @param string $content
*/
function fn_write($filepath, $content) {
if ($fp = fopen($filepath, 'a')) {
$startTime = microtime();
// 对文件进行加锁时,设置一个超时时间为1ms,如果这里时间内没有获得锁,就反复获得,直接获得到对文件操作权为止,当然。如果超时限制已到,就必需马上退出,让出锁让其它进程来进行操作。
do {
$canWrite = flock($fp, LOCK_EX);
if (!$canWrite) {
usleep(round(rand(0, 100) * 1000));
}
} while ((!$canWrite) && ((microtime() - $startTime) < 1000));
if ($canWrite) {
fwrite($fp, $content);
}
fclose($fp);
}
} 转载于https://www.cnblogs.com/sochishun/p/7375328.html 使用php生成器yield可以看这个https://www.jb51.net/article/160564.htm

php高效读取和写入的更多相关文章

  1. C#中创建、打开、读取、写入、保存Excel的一般性代码

    ---转载:http://hi.baidu.com/zhaocbo/item/e840bcf941932d15fe358228 1. Excel对象微软的Excel对象模型包括了128个不同的对象,从 ...

  2. php高效遍历文件夹、高效读取文件

    /** * PHP高效遍历文件夹(大量文件不会卡死) * @param string $path 目录路径 * @param integer $level 目录深度 */ function fn_sc ...

  3. Hadoop基础-HDFS的读取与写入过程

    Hadoop基础-HDFS的读取与写入过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 为了了解客户端及与之交互的HDFS,NameNode和DataNode之间的数据流是什么样 ...

  4. HDFS数据流-剖析文件读取及写入

    HDFS数据流-剖析文件读取及写入 文件读取 1. 客户端通过调用FileSystem对象的open方法来打开希望读取的文件,对于HDFS来说,这个对象是分布式文件系统的一个实例.2. Distrib ...

  5. Java IO_003.Reader与Writer--字符流以及编码对数据的操作(读取与写入)

    Java IO之Reader与Writer对象常用操作(包含了编码问题的处理) 涉及到文件(非文件夹)内容的操作,如果是纯文本的情况下,除了要用到File(见之前文章),另外就必须用到字符输入流或字符 ...

  6. Java IO_002.InputStream与OutputStream--字节流对数据的操作(读取与写入)

    Java IO之FileInputStream与FileOutputStream对象常用操作 涉及到文件(非文件夹)内容的操作,除了要用到File(见之前文章),另外就必须用到输入流或输出流. 输入流 ...

  7. python语言(三)文件修改、函数、json操作、监控日志代码、高效读取文件

    1.文件操作(2)   代码 f = open('a.txt','a') # "a" 如果源文件不在,会自动创建 f.write('abc') result = f.read() ...

  8. ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

    当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...

  9. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法

    来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...

随机推荐

  1. Vue Router详细教程

    1.什么是路由 1.1路由简介 说起路由你想起了什么?路由是一个网络工程里面的术语. 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动. --- 维基百科 额,啥玩意? 没听 ...

  2. 使用idea maven打包项目 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources

    超级折磨人 在网上搜到的解决方案: 技术交流群 : 816227112 修改 和 <plugin> <groupId>org.apache.maven.plugins</ ...

  3. 类加载Class Loading

    JVM 何时.如何把 Class 文件加载到内存,形成可以直接使用的 Java 类型,并开始执行代码? ​ 类的生命周期 加载 - 连接(验证.准备.解析)- 初始化 - 使用 - 卸载. 注意,加载 ...

  4. 解决Jenkins的html样式不生效问题的终极方案

    本文从四个步骤来分享我们在自行搭建jenkins过程中遇到的报表样式不全(即html报告展示不正确)的问题: 1.问题现象 2.问题原因 3.问题原因补充 4.解决方法(可以直接跳到第四步解决问题) ...

  5. Elasticsearch从入门到放弃:瞎说Mapping

    前面我们聊了 Elasticsearch 的索引.搜索和分词器,今天再来聊另一个基础内容-- Mapping. Mapping 在 Elasticsearch 中的地位相当于关系型数据库中的 sche ...

  6. 在centOS7上安装一套java运行环境

    前提:更换centos的默认yum源,提高下载速度. 备份系统自带的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS- ...

  7. gotoblas,mpich,hpl,hpcg的安装

    gotoblas的安装 mpich 安装 tar zxvf mpich-3.2.1.tar.gz cd mpich-3.2 ./configure --prefix=/usr/local/mpich( ...

  8. FSAF

    Feature Selective Anchor-Free Module for Single-Shot Object Detection https://zhuanlan.zhihu.com/p/5 ...

  9. java 多态二

    一 多态-转型 多态的转型分为向上转型与向下转型两种: 向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程. 使用格式: 父类类型  变量名 = new 子类类型() ...

  10. 【译】gRPC-Web for .NET now available

    .NET 的 gRPC-Web 现在正式发布了.我们在一月份发布了实验版,从那时起,我们就根据早期的用户反馈进行着改进. 有了这个版本,gRPC-Web 就变成了 grpc-dotnet 项目的一个完 ...