本文整理匯總了PHP中FileCtl::scandirR方法的典型用法代碼示例。如果您正苦於以下問題:PHP FileCtl::scandirR方法的具體用法?PHP FileCtl::scandirR怎麽用?PHP FileCtl::scandirR使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類FileCtl
的用法示例。
在下文中一共展示了FileCtl::scandirR方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: garbageCollection
/**
* いわゆるひとつのガベコレ
*
* $targetDirから最終更新より$lifeTime秒以上たったファイルを削除
*
* @access public
* @param string $targetDir ガーベッジコレクション対象ディレクトリ
* @param integer $lifeTime ファイルの有効期限(秒)
* @param string $prefix 対象ファイル名の接頭辭(オプション)
* @param string $suffix 対象ファイル名の接尾辭(オプション)
* @param boolean $recurive 再帰的にガーベッジコレクションするか否か(デフォルトではFALSE)
* @return array|false 削除に成功したファイルと失敗したファイルを別々に記録した二次元の配列
*/
function garbageCollection($targetDir, $lifeTime, $prefix = '', $suffix = '', $recursive = FALSE)
{
if (!strlen($targetDir)) {
return false;
}
$result = array('successed' => array(), 'failed' => array(), 'skipped' => array());
$expire = time() - $lifeTime;
//ファイルリスト取得
if ($recursive) {
$list = FileCtl::scandirR($targetDir);
if ($list === false) {
return false;
}
$files =& $list['files'];
} else {
$list = scandir($targetDir);
$files = array();
$targetDir = realpath($targetDir) . DIRECTORY_SEPARATOR;
foreach ($list as $filename) {
if ($filename == '.' || $filename == '..') {
continue;
}
$files[] = $targetDir . $filename;
}
}
//検索パターン設定($prefixと$suffixにスラッシュを含まないように)
if ($prefix || $suffix) {
$prefix = is_array($prefix) ? implode('|', array_map('preg_quote', $prefix)) : preg_quote($prefix);
$suffix = is_array($suffix) ? implode('|', array_map('preg_quote', $suffix)) : preg_quote($suffix);
$pattern = '/^' . $prefix . '.+' . $suffix . '$/';
} else {
$pattern = '';
}
//ガベコレ開始
foreach ($files as $filename) {
if ($pattern && !preg_match($pattern, basename($filename))) {
//$result['skipped'][] = $filename;
continue;
}
if (filemtime($filename) < $expire) {
if (@unlink($filename)) {
$result['successed'][] = $filename;
} else {
$result['failed'][] = $filename;
}
}
}
return $result;
}