當前位置: 首頁>>代碼示例>>PHP>>正文


PHP FileCtl::scandirR方法代碼示例

本文整理匯總了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;
 }
開發者ID:poppen,項目名稱:p2,代碼行數:62,代碼來源:FileCtl.php


注:本文中的FileCtl::scandirR方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。