Найти самый старый файл в папке с помощью PHP

Вы можете перемещать оба списка одновременно с помощью zip:

for (x, y) in zip(list1, list2): do_something

Функция zip дает вам [(1,5), (2,6), (3,7), (4,8)], поэтому в итерации цикла N вы получаете N-й элемент каждого списка.

16
задан halfer 18 July 2017 в 12:55
поделиться

2 ответа

// Grab all files from the desired folder
$files = glob( './test/*.*' );

// Sort files by modified time, latest to earliest
// Use SORT_ASC in place of SORT_DESC for earliest to latest
array_multisort(
array_map( 'filemtime', $files ),
SORT_NUMERIC,
SORT_ASC,
$files
);

echo $files[0] // the latest modified file should be the first.

Взято с этого веб-сайта

Удачи

РЕДАКТИРОВАТЬ: Чтобы исключить файлы в каталоге, чтобы уменьшить количество ненужных поисков:

$files = glob( './test/*.*' );
$exclude_files = array('.', '..');
if (!in_array($files, $exclude_files)) {
// Sort files by modified time, latest to earliest
// Use SORT_ASC in place of SORT_DESC for earliest to latest
array_multisort(
array_map( 'filemtime', $files ),
SORT_NUMERIC,
SORT_ASC,
$files
);
}

echo $files[0];

Это полезно, если вы знаете что искать и что можно исключить.

25
ответ дан 30 November 2019 в 21:03
поделиться

У этого подхода есть некоторые очевидные недостатки - порождение дополнительного процесса, зависимости от ОС и т. Д., Но для файлов размером 300 КБ это может быть быстрее, чем попытка итерации в PHP:

exec('dir /TW /O-D /B', $output);
var_dump($output[0]);

FWIW, вам действительно следует избегать размещения 300 000 файлов в одном каталоге. Это не очень хорошо работает в большинстве файловых систем.

2
ответ дан 30 November 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: