基于PHP spl 遍历文件删除过期的日志文件

一.定义PHP类 , 限制文件扩展 RecursiveFileFilterIterator.class.php

<?php
class RecursiveFileFilterIterator extends FilterIterator
{ protected $ext = array('log','jpg','gif'); public function __construct($path) {
parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)));
} public function accept() {
$item = $this->getInnerIterator();
if ($item->isFile() && in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext)) {
return TRUE;
}
}
}

  

二.调用

<?php
require 'RecursiveFileFilterIterator.class.php';
try {
foreach (new RecursiveFileFilterIterator("d:\xxx\xxx\log") as $item) {
echo "=====================".PHP_EOL;
if (time() - $item->getCTime() > (24*3600*30)) {
var_dump($item);
var_dump($item->getPathName());
#@unlink($item->getPathName());
}
}
} catch (Exception $e) {
var_dump($e->getMessage());
}

三.附上网上整理的一些方法和属性

 'getATime' => $file->getATime(), //最后访问时间
'getBasename' => $file->getBasename(), //获取无路径的basename
'getCTime' => $file->getCTime(), //获取inode修改时间
'getExtension' => $file->getExtension(), //文件扩展名
'getFilename' => $file->getFilename(), //获取文件名
'getGroup' => $file->getGroup(), //获取文件组
'getInode' => $file->getInode(), //获取文件inode
'getLinkTarget' => $file->getLinkTarget(), //获取文件链接目标文件
'getMTime' => $file->getMTime(), //获取最后修改时间
'getOwner' => $file->getOwner(), //文件拥有者
'getPath' => $file->getPath(), //不带文件名的文件路径
'getPathInfo' => $file->getPathInfo(), //上级路径的SplFileInfo对象
'getPathname' => $file->getPathname(), //全路径
'getPerms' => $file->getPerms(), //文件权限
'getRealPath' => $file->getRealPath(), //文件绝对路径
'getSize' => $file->getSize(),//文件大小,单位字节
'getType' => $file->getType(),//文件类型 file dir link
'isDir' => $file->isDir(), //是否是目录
'isFile' => $file->isFile(), //是否是文件
'isLink' => $file->isLink(), //是否是快捷链接
'isExecutable' => $file->isExecutable(), //是否可执行
'isReadable' => $file->isReadable(), //是否可读
'isWritable' => $file->isWritable(), //是否可写

PHP SPL SplFileInfo FilterIterator 轮询文件删除的更多相关文章

  1. java读取某个目录是否有新增文件(轮询)

    使用 commons-io 中的文件监控 jar包: package org.demo.file; import java.util.concurrent.TimeUnit; import org.a ...

  2. 闲话ajax,例ajax轮询,ajax上传文件[开发篇]

    引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放 ...

  3. Android中实现异步轮询上传文件

    前言 前段时间要求项目中需要实现一个刷卡考勤的功能,因为涉及到上传图片文件,为加快考勤的速度,封装了一个异步轮询上传文件的帮助类 效果  先上效果图 设计思路 数据库使用的框架是GreenDao,一个 ...

  4. logrotate关于日志轮询和分割

    如果你的是源码包安装的服务,那么对于Linux服务器上的一些服务在运行当中产生的日志很重要,可以判断你的服务是否有异常等,但源码包安装的日志是没有日志的轮询或者说是切割能力的, 所以你就需要用到bas ...

  5. squid日志配置与轮询

    squid日志分类及参数 SQUID默认的log文件非常多,其中最重要的LOG日志有三个,分别为access.log.store.log.cache.log.三个日志的记录的内容如下: access. ...

  6. 轮询、select、 epoll

    网卡设备对应一个中断号, 当网卡收到网络端的消息的时候会向CPU发起中断请求, 然后CPU处理该请求. 通过驱动程序 进而操作系统得到通知, 系统然后通知epoll, epoll通知用户代码.  一. ...

  7. linux 日志定时轮询流程详解(logrotate)

    logrotate介绍 对于Linux系统安全来说,日志文件是极其重要的工具.日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.当日志文件不断增长的时候,就需要定 ...

  8. nginx日志配置,以及日志轮询

    一.为nginx配置错误日志 Nginx错误日志是调试nginx的重要手段,属于核心功能模块的参数(ngx_core_module)该参数名字为err_log,是放在Main区块中全局配置 err_l ...

  9. spring-cloud-kubernetes的服务发现和轮询实战(含熔断)

    本文是<spring-cloud-kubernetes实战系列>的第四篇,主要内容是在kubernetes上部署两个应用:Web-Service和Account-Service,通过spr ...

  10. Android中实现轮询下载安装应用的Dialog

    前言 因为有涉及到静默安装,主要是针对已经root的设备,应需求,是在ARM的主板上开发的,所以对于常规手机仅能做到轮询下载,做不到静默安装. 效果图 用的鸿洋大神的百分比布局,各个分辨率都完美适配, ...

随机推荐

  1. Oracle数据一致性与事务管理

    数据一致性和事务 Oracle中的数据一致性 当从A表取一条数据添加到B表时,需先删除A表数据,再新增B表数据, 如果第二条操作出异常时,就造成了数据不一致. Oracle中的事务 事务是保证数据一致 ...

  2. 设置修改Excel默认字体

    在设置新建Excel时的默认字体时存在如下两种情况: 从打开的Excel软件里面新建excel表格时(比如从开始菜单点击Excel后选择了新建): 默认字体是在"选项-常规-新建工作簿时&q ...

  3. nsw与mock 模拟分页接口

    安装依赖 项目中使用到一下依赖,请提前安装 npm install msw lodash axios 开启mock 定义mock,创建 src/mock/index.ts import _ from ...

  4. 抓取微信小程序源码

    想成为一名微信小程序的开发者,前端思路的学习和安全意识是非常有必要的,故务必掌握小程序反编译技能. 这里用到了2个工具<包解密>与<反编译>(非原创,均来自网上的大佬),特别适 ...

  5. 前端开发系列060-网络篇之浏览器、HTML和内核(引擎)

    一.浏览器的发展和特性 浏览器的发展 浏览器的历史并不长,即便到今天来算也只有短短的27年,下面列出浏览器历史中的重要节点. Tim Berners-Lee 在80年代末期90年代初期发明了世界上第一 ...

  6. 基于HttpURLConnection的android http请求封装

    基于HttpURLConnection的android http请求封装 使用方法 //axiosGH(url,callback)//简写方式,默认为get请求 //axiosGH.get(url,c ...

  7. 【STL和泛型编程】3. set、map分析(及typename起源)

    前置知识:红黑树原理 [数据结构]7.平衡搜索树(AVL树和红黑树),红黑树的平衡性有利于 search 和 insert 红黑树的迭代器 begin() 左侧 end() 右侧 迭代顺序 5 6 7 ...

  8. CAD插件『PDF转CAD格式』安装教程

    在工程设计领域,常规流程是将完成的CAD图纸直接转换为PDF格式或输出为纸质蓝图进行分发.由于PDF文件具有跨平台兼容性强.防篡改等特性,在工程交付环节被广泛采用.但当需要对既有图纸进行二次修改时,P ...

  9. 支付宝小程序IDE突然极不稳定

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app,因公司项目是快抖微支 ...

  10. pwndbg常用操作指令

    基本命令 help //帮助 i //info,查看一些信息,只输入info可以看可以接什么参数,下面几个比较常用 i b //常用,info break 查看所有断点信息(编号.断点位置) i r ...