首页 > 编程语言 >PHP SPL SplFileInfo FilterIterator 轮询文件删除

PHP SPL SplFileInfo FilterIterator 轮询文件删除

时间:2023-03-02 11:44:06浏览次数:38  
标签:文件 SplFileInfo 获取 轮询 getCTime item SPL file PHP

基于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(), //是否可写

 

标签:文件,SplFileInfo,获取,轮询,getCTime,item,SPL,file,PHP
From: https://www.cnblogs.com/phpnan/p/17171252.html

相关文章

  • 九、MybatisPlus的多数据源
    场景适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等目前我们就来模拟一个纯粹多库的一个场景,其他场景类似场景说明:我们创建两个库,分别为:mybatis_plus(以前......
  • 八、MybatisPlus的代码生成器示例
    引入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version></dependency><dependency> <......
  • 六、MybatisPlus实现乐观锁
    乐观锁场景一件商品,成本价是80元,售价是100元。老板先是通知小李,说你去把商品价格增加50元。小李正在玩游戏,耽搁了一个小时。正好一个小时后,老板觉得商品价格增加到150元,......
  • 轮询、长轮询、长连接、websocket
    前言Web端即时通讯技术:即时通讯技术简单的说就是实现这样一种功能:服务器端可以即时地将数据的更新或变化反应到客户端,例如消息即时推送等功能都是通过这种技术实现的。但......
  • 轮询
    https://blog.csdn.net/m0_48333563/article/details/125968144https://blog.csdn.net/u010263423/article/details/118408737?spm=1001.2101.3001.6661.1&utm_medium=dis......
  • slice()函数与splice()函数
    JavaScript高级程序设计P1511.slice()函数slice()函数用于重新创建一个包含原有数组中一个或多个元素的新数组,(将原数组赋值一份进行修改操作,使用slice()函数不会对原......
  • SkeyeRTSPLive传统视频监控互联网+实现利器解决方案
    随着互联网的发展,传统安防行业已不再满足于仅仅通过一台PC机器,或者一台NVR接入摄像机源进行录像和监控的基本要求,人们迫切的需要利用目前相当便利的网络环境,以便能实现随时......
  • mybatisPlus驼峰命名映射
    踩坑记录项目使用mybatisPlus,在查询时候,数据库明明有值,且可返回,但是到了list里部分值就是null。最后发现是封装的实体中的字段与数据库写的一样,如数据库是user_name,实体......
  • Python split()方法
    通过指定分隔符对字符串进行切片split()方法语法:str.split(str="",num=stpring.count(str)).str--分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。num--......
  • 题解 CF1776F【Train Splitting】
    题意:有一个\(n\)点\(m\)边简单无向连通图,请用若干(至少为\(2\))种颜色对每条边染色,使得:对于每种颜色,仅由该颜色的边组成的生成子图不连通。对于每两种颜色,仅由该颜色......