Ману курил, но так и не нашел в пхп возможности поиска файлов по заданным параметрам. Помогите пожалуйста решить следующие задачи: 1) Найти в папке 10 последних закачанных *.gif файлов. 2) Найти файл, следующий за заданным по алфавиту. (Про существование scandir знаю. В конце концов, он может и помочь для 2 задачи, но не для 1)
ИМХО, если в папку записывает какая-то сторонняя штуковина, то выход для скрипта есть один - сканировать все файлы и выявлять последний десяток по дате изменения.
а если записывает свой скрипт то хранить данные о закаченном файле в отдельном месте, например в бд или каком-ть файле
> как пробовал? Никак Просто много думал. Раз возможностей нет, спасибо за ответы, буду мучить readdir. Последний вопрос: какая функция возвращает дату изменения файла?
Вашу мать, твою дивизию, чтоб мне якорь в задницу, .... mrgd glob для поиска самих фаиов, дальше пробегаемся по каждому фаилу и определяем его дату создания/модификации. Это кросс платформенно и будет нормально работать везде. Для *nix систем есть более продвинутый вариант с консольной командой find. Почитайте комментарии в мануале по glob - там куча разных вариантов как похожих на мною выше предложенное так и с find - 100% можно что-то найти + немного почитать man find
Psih, респектище! Получилось вот что (насечет поиска 10 посл. файлов): Код (Text): <?php for($folder=2000; $folder<=2008; $folder++) { foreach (glob($folder.'/*.gif') as $filename) { $files['name'][] = $filename; $files['date'][] = filemtime($filename); } } arsort($files['date'], SORT_NUMERIC); $i=0; foreach($files['date'] as $key=>$date) { echo($files['name'][$key].'<br>'); if (++$i==10) {break;} } ?> (2000, 2001 .. 2008 - это папки, в который файлв хранятся) Вроде код со своими обязанностями справляется, но все-таки меня коробит создание массива размером в 2000 элементов, в случае если в папках будет 2000 файлов. Как можно улучшить?
Не использовать встроенную сортировку. Это вообще дибилизм в данном случае. Ты бежишь по файлам - отбирай сразу 10 шт. самых свежих. Должна получится своя полу-сортировка, полу-пробег по файлам. Всего лишь одним циклом и массив только результирующий.