基于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. C# datagridView 表格渲染变色 ( 动态改变表格值) 绘制时改变表格值

    private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)        {           ...

  2. 4G CAT1 DTU RS232/485转4G Modbus RTU转4G Modbus TCP RS232/485转MQTT DLT-645/RTU转云平台JSON

    4G CAT1 DTU   RS232/485转4G   Modbus RTU转4G Modbus TCP   RS232/485转MQTT   DLT-645/RTU转云平台JSON 高性价比的CA ...

  3. vant批量选择删除列表

    代码如下 <template> <div class="wrapp"> <button @click="onEdit">{{ ...

  4. 前端开发系列128-进阶篇之template compile

    最近有个朋友问<%=...%> 和 {{ Mustache }} 插值语法的一些问题,突然想起以前使用<%=...%>语法进行模板编译的日子,似乎已经很久远了,刚好有点时间所以 ...

  5. 通过Web ETL统一调度和管理DataX任务

    DataX是一款功能强大的数据集成平台,但是其无WEB管理界面使得DataX任务在管理与调度方面存在不少问题,任务多了后很难管理和维护,同时使用和学习成本也比较高.今天就介绍下用RestCloud E ...

  6. 如何通过iPaaS对数据作预警监控

    通过iPaaS的企业级API网关的预警设置功能即可实现监控,预警设置功能可配置多种预警机制,如API超时发送通知.调用错误发送通知.速率异常通知.业务数据异常通知等多场景监测预警.也可使用邮件.企业微 ...

  7. 给 DBA 的七个成长建议-九五小庞

    在采访的最后,谈及一名优秀的DBA应该具备哪些素质或能力时,李建明根据自己十多年的职场经验,分享了他的看法并给出了七个建议: 1. 具备扎实的数据库理论功底. 比如数据库系统的概论.数据库的核心概念. ...

  8. Debian安装数据库

    Debian安装数据库 本来用的MySQL,但是安装MySQL很麻烦,MariaDB作为MySQL的替代品可以直接使用以前用MySQL的方式使用 参考链接: 如何在 Debian 10 上安装 Mar ...

  9. spring 的事物

  10. Git 常用命令二

      git checkout - filename : 取消 本次对 filename 文件的修改(注意这里只有一个横杠) git log相关: git log --pretty=raw : 显示提交 ...