개발! 딱 깔끔하고 센스있게!

어떻게 php 을 통해 수정 날짜 에 따라 파일 을 정렬 하다 본문

개발 스크랩 메모/PHP

어떻게 php 을 통해 수정 날짜 에 따라 파일 을 정렬 하다

렉사이 2020. 12. 28. 02:39

배경:나는 익명의 로그인된 ftp 서버가 하나 있는데, ftp 파일의 자모순만 열거합니다.

제가 원하는 파일리스트는 지난 번 수정된 날짜에 따라 최근의 첫 번째입니다.

나는 ftpu exec ($connnt `ls-t`을 시도했지만 거부된 권한오류가 나타나서 왜 일을 하지 않았는지 모르겠다.

php cli 를 사용하고 있습니다.

파일의 수량은 천계입니다.

저는 최근 파일만 사용하고 싶습니다.

원본 목록을 얻고, 그룹 요소의 날짜를 찾을 수 있는 일부는 도움이 될 수 있지만, 간단한 방법이 있기를 바란다.

내가 터미널 명령을 통해 ls-t 로그인할 때 모든 것이 정상이다.

그래서 왜 ftp-exec 가 일을 안하는지 궁금해요.

간단한 건의를 찾다.

미리 감사합니다.

대답

지난번 수정 날짜 에 따라 파일 정렬 을 하려면 사용할 수 있다

ftp_nlist($conn, '-t .'); 

그러나 이것은 모든 파일의 날짜를 알려줄 수 없다.

수정 날짜를 얻으려면 ftp rawlist 를 사용하고 출력을 분석할 수 있다.

다음은 간단한 예입니다:

$list = ftp_rawlist($ftp, '.'); $results = array(); foreach ($list as $line) { list($perms, $links, $user, $group, $size, $d1, $d2, $d3, $name) = preg_split('/\s+/', $line, 9); $stamp = strtotime(implode(' ', array($d1, $d2, $d3))); $results[] = array('name' => $name, 'timestamp' => $stamp); } usort($results, function($a, $b) { return $a['timestamp'] - $b['timestamp']; }); 

이 때 $results 는 지난번 수정 시간 정렬 정렬 목록을 포함하고, sort 함수를 반전하여 최근 수정된 첫 번째 형식의 목록을 가져오십시오.

주의: ftpu rawlist 가 정확한 수정 시간 스탬프를 제공하지 않기 때문에 이 코드는 항상 정확하게 작업하지 않을 수 있습니다.

FTP 서버의 출력이 이 알고리즘과 일치하는지 확인하고, 일부 건전성 검사를 포함하여 앞으로 이런 상태를 유지할 수 있도록 해야 한다.

Comments