언젠가 써먹을 수 있을 것 같아서 정리해둡니다 :)

 

function getMemberSrlsWithSignature($dir, &$results = array())
{
    $sub_dir = scandir($dir);
    foreach ( $sub_dir as $key => $val )
    {
        $path = realpath($dir . DIRECTORY_SEPARATOR . $val);
        if ( !is_dir($path) )
        {
            preg_match('/(\d+)\.signature\.php/', $path, $matches);
            $results[] = $matches[1];
        }
        else if ( $val !== '.' && $val !== '..' )
        {
            getMemberSrlsWithSignature($path, $results);
        }
    }
    return $results;
}

$dir = RX_BASEDIR . 'files/member_extra_info/signature';
$member_list_with_signature = getMemberSrlsWithSignature($dir);

 

원출처 : https://stackoverflow.com/questions/24783862/list-all-the-files-and-folders-in-a-directory-with-php-recursive-function#answer-24784144

글쓴이 윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile
    어떻게 활용해보실 생각이세요?
  • profile profile

    서명이 있는 회원들만 모아서 디스플레이해주는 위젯을 만든다든가, 좀 더 응용해서 서명에 특정 키워드가 있는 회원들만 따로 추출한다든가 할 수 있을 것 같아요.
    지금은 확장변수 다중검색을 업그레이드 중인데, 거기에 있는 서명 검색 기능을 좀 더 효율적으로 해볼 수 있지 않을까 해서 (스택오버플로우의 힘을 빌려ㅋ) 코드를 짜본 거예요 :)

  • profile profile
    오홍. 그렇군요. 엄청난 작품이 나오겠군요. 화이팅!!
  • profile
    서명을 언제까지나 저렇게 복잡한 폴더 구조 아래의 파일로 저장한다는 법은 없으니, 나중에 활용하실 때 최신 버전에서도 통하는지 다시 확인해 보시기 바랍니다. 라이믹스는 files 폴더 아래에 첨부파일을 제외한 불필요한 파일이 많이 쌓이는 것을 점차 줄여나가고 있으니까요. 포인트도 예전에는 파일로 저장했는데 모두 캐시로 옮겼습니다.^^
  • profile profile
    네, 코어 업데이트될 때마다 확인토록 하겠습니다 :)
    캐시로 가게 되면 get 시도했다가 없을 때 캐시 생성 하는 코드도 포함해야겠군요.

    암튼 번호의 모든 자릿수를 한번에 파악 가능만 해도 좀 시원할 것 같습니다!
  • profile
    재귀함수..?ㄷㄷ
  • profile profile

    번호 자릿수에 따라 폴더구조가 다른 경우가 있어서(가령 4번이면 004 폴더 바로 아래에 있고, 164360이면 360>164 아래에 있는 식) 이런 식으로 찾아가는 것 말고는 모르겠더라구요.
    위에 나온 이야기처럼 나중에 캐시처리를 하게 되면 구조 좀 쉽게 만들어주세효ㅜ

  • profile profile

    네, getNumberingPath() 함수에서 그렇게 되어 있습니다.

    하나의 폴더에 너무 많은 파일이 저장되지 않도록, 숫자가 늘어날수록 서브폴더를 더 많이 사용하도록 설계된 것 같은데... 아게 XE 초창기에는 쓸만했는지 몰라도, 대형 커뮤니티는 수천만 개의 폴더가 생겨버리는 바람에 난감합니다. 폴더 구조가 복잡할수록 rsync로 백업하는 데도 오래 걸리고요.

    첨부파일은 라이믹스를 신규 설치한 경우 날짜 기준으로 폴더를 생성하도록 바꿨기 때문에 더이상 서브폴더가 폭발적으로 늘어나는 문제가 없습니다. 그러나 이건 files 테이블에 첨부파일 저장 경로를 따로 기록하는 컬럼이 있어서 가능했던 것이고... 프로필 사진이나 썸네일은 그런 정보를 따로 저장해둘 곳이 없기 때문에 폴더 구조를 좀더 간단하게 개편하기가 난감한 상태입니다.

    서명은 그냥 member 테이블에 확장변수로 저장해도 되는데 왜 굳이 별도의 파일로 해놓았는지 의문이네요. 분량이 그렇게 많은 것도 아니고...