За последние 24 часа нас посетили 45329 программистов и 1813 роботов. Сейчас ищут 917 программистов ...

Листинг файлов и сортировка по параметрам.

Тема в разделе "PHP для новичков", создана пользователем tcp65, 24 янв 2010.

  1. tcp65

    tcp65 Активный пользователь

    С нами с:
    7 ноя 2007
    Сообщения:
    44
    Симпатии:
    0
    Адрес:
    Россия, Москва
    Приветствую!

    Стоит такая задача: Найти в заданной директории три последних добавленных/измененных файла и напечатать их имена.

    Как сделать листинг директории написано везде, но как сделать листинг с параметрами файлов, типа дата размер и пр. не могу найти никакой информации. Подскажите пожалуйста!

    Спс.
     
  2. WarGot

    WarGot Активный пользователь

    С нами с:
    8 янв 2010
    Сообщения:
    55
    Симпатии:
    0
  3. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    filectime();
     
  4. tcp65

    tcp65 Активный пользователь

    С нами с:
    7 ноя 2007
    Сообщения:
    44
    Симпатии:
    0
    Адрес:
    Россия, Москва
    А если попадается папка? Я прочитал мэн stat, он работает только с файлом.
     
  5. WarGot

    WarGot Активный пользователь

    С нами с:
    8 янв 2010
    Сообщения:
    55
    Симпатии:
    0
    tcp65
    даже и не знаю, ни разу не сталкивался с таким. А stat на папку пробовал уже натравить ?
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    http://ua2.php.net/manual/en/function.is-dir.php

    В *nix все - файл.
    даже монитор, принтер и т.д.
     
  7. WarGot

    WarGot Активный пользователь

    С нами с:
    8 янв 2010
    Сообщения:
    55
    Симпатии:
    0
    Simpliest
    Не, это понятно. А инфу по папке как получить ?
     
  8. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Проверять не именуется ли файл '.' или '..'
     
  9. tcp65

    tcp65 Активный пользователь

    С нами с:
    7 ноя 2007
    Сообщения:
    44
    Симпатии:
    0
    Адрес:
    Россия, Москва
    Вот интересное решение.

    Код (Text):
    1.  
    2. getFileList("/files/ser");
    3.  
    4.  
    5.   function getFileList($dir)
    6.   {
    7.    
    8.     $retval = array();
    9.  
    10.     if(substr($dir, -1) != "/") $dir .= "/";
    11.  
    12.     # open pointer to directory and read list of files
    13.     $d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading");
    14.     while(false !== ($entry = $d->read())) {
    15.       # skip hidden files
    16.       if($entry[0] == ".") continue;
    17.       if(is_dir("$dir$entry")) {
    18.         $retval[] = array(
    19.           "name" => "$dir$entry/",
    20.           "type" => filetype("$dir$entry"),
    21.           "size" => 0,
    22.           "lastmod" => filemtime("$dir$entry")
    23.         );
    24.       } elseif(is_readable("$dir$entry")) {
    25.         $retval[] = array(
    26.           "name" => "$dir$entry",
    27.           "type" => mime_content_type("$dir$entry"),
    28.           "size" => filesize("$dir$entry"),
    29.           "lastmod" => filemtime("$dir$entry")
    30.         );
    31.       }
    32.     }
    33.     $d->close();
    34.  
    35.  
    36.  
    37.   echo "<table>\n";
    38.   echo "<tr><th>Name</th><th>Type</th><th>Size</th><th>Last Mod.</th></tr>\n";
    39.   foreach($retval as $file) {
    40.     echo "<tr>\n";
    41.     echo "<td>{$file['name']}</td>\n";
    42.     echo "<td>{$file['type']}</td>\n";
    43.     echo "<td>{$file['size']}</td>\n";
    44.     echo "<td>" . date("r", $file['lastmod']) . "</td>\n";
    45.     echo "</tr>\n";
    46.   }
    47.   echo "</table>\n\n";
    48.  
    49.     return $retval;
    50.   }
    Вывод:
    HTML:
    1.  
    2. Name Type Size Last Mod.
    3. /files/ser/[full] Entourage (Красавцы) 1 MTV/ dir 0 Mon, 21 Dec 2009 16:19:10 +0300
    4. /files/ser/[full] The Office 1/ dir 0 Sun, 20 Dec 2009 20:39:59 +0300
    5. /files/ser/[full] How I Met Your Mother 4 HD/ dir 0 Sun, 20 Dec 2009 15:06:59 +0300
    6. /files/ser/[full] Smith/ dir 0 Sun, 20 Dec 2009 19:22:54 +0300
    7. /files/ser/[full] Entourage (Красавцы) 2 MTV/ dir 0 Mon, 21 Dec 2009 16:32:06 +0300
    8. /files/ser/[full] Heroes 3/ dir 0 Sun, 20 Dec 2009 14:27:58 +0300
    9.  
     
  10. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    tcp65
    Смените или удалите аватар. Разрешены только личные фотографии.
     
  11. tcp65

    tcp65 Активный пользователь

    С нами с:
    7 ноя 2007
    Сообщения:
    44
    Симпатии:
    0
    Адрес:
    Россия, Москва
    Вопрос теперь в другом, как перед выводом отсортировать этот многомерный массив по 'lastmod'?
     
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    usort
    array_multisort
     
  13. tcp65

    tcp65 Активный пользователь

    С нами с:
    7 ноя 2007
    Сообщения:
    44
    Симпатии:
    0
    Адрес:
    Россия, Москва
    Друзья не могу правильно применить сортировку к моей задаче.
    Помогите пожалуйста!