基于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(), //是否可寫
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545534.html
標籤:PHP