- 2007-02-25 (日) 15:25
- PHP
この記事の所要時間: 約 0分38秒
あるディレクトリ内のファイルを走査して各ファイルに処理を行うなんて時に今までは再帰を使って実装していました。
PHP5な環境ならRecursiveDirectoryIteratorを使ってこんな感じで作ってました。
<?php
function gc(RecursiveDirectoryIterator $itr, $term) {
foreach ($itr as $elem) {
if ($itr->hasChildren()) {
gc($itr->getChildren(), $term);
} else {
if ($elem->isFile() && $elem->getMTime() < $term) {
// unlink($elem->getPathname());
echo $elem->getPathname() . PHP_EOL;
}
}
}
}
$term = strtotime('-1 day');
gc(new RecursiveDirectoryIterator('/tmp'), $term);
?>
これRecursiveIteratorIterator(凄い名前。。。)を使えば再帰なしで書けるんですね。
<?php
function gc($path, $term) {
$itr = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach ($itr as $elem) {
if ($elem->isFile() && $elem->getMTime() < $term) {
// unlink($elem->getPathname());
echo $elem->getPathname() . PHP_EOL;
}
}
}
$term = strtotime('-1 day');
gc('/tmp', $term);
?>
うーん便利。
GoogleCodeSearchで見るとPHPUnitやらPHP_CodeSnifferで使われていました。
SPLはもうちょっと情報が欲しいですね。
参考:PHPのSPLを使用してディレクトリを操作する – PHPプロ!ニュース
- Newer: CakePHPをWebサイトの一部で使う
- Older: 2038年問題
トラックバック:0
- このエントリーのトラックバックURL
- /blog/2007/02/php_recursive_directory_iterator.html/trackback
- Listed below are links to weblogs that reference
- RecursiveDirectoryIteratorで再帰なしでファイル走査 from Shin x blog

