Temat: Wyszukiwanie zmodyfikowanych plików
Data: 2007-02-23 o godz. 19:27:20
Autor: As


Znalazłem ostatnio ciekawa funkcję na php.net do wyszukiwania ostatnio zmodyfikowanych plików. Było mi to wówczas bardzo potrzebne, ponieważ przez awarię zasilania ogromna ilość starych plików wymieszała się z małą grupką nowo utworzonych. Niestety nie pamiętałem ich nazw oraz lokalizacji. Przerobiłem trochę funkcję i napisałem skrypt, który wyświetla listę zmodyfikowanych plików (począwszy od konkretnej daty) z danego katalogu i jego podkatalogów w formie tablicy. Dane można później łatwo posortować, wyświetlić, zapisać etc.

<?php 

/* ====================================================== *\ 

   Funkcja: file_search 

   Opis: Funkcja służy do wyszukiwania ostatnio  
         zmodyfikowanych plików z konkretnego  
         katalogu oraz jego podkatalogów. 
    
   Składnia: $address [string] ścieżka do katalogu 
             $time [data] forma "rok-miesiąc-dzień godzina:minuta:sekunda" 
             - przedział czasowy z którego pliki brane są pod uwagę 
               np: począwszy od 2007-02-23 00:00:00 i nowsze 

   Funkcja zwraca tablicę z plikami:  
              
             $array[int_czas] => '(ścieżka/nazwa + data modyfikacji)' 

   Tablice można dowolnie sortować etc. 

             $array_pliki = &file_search($dir, $comparedate); 
  
             arsort($array_pliki);  

             foreach ($array_pliki as $value)  
             { 
                      echo $value.'<br>'; 
             } 
   
   -------------------- 
   Ekipa TS 
   as@twoja-strona.net 
   -------------------- 

\* ====================================================== */

function file_search($address$time
{  

  static 
$tab_ = array();

  @
$dir opendir($address);  
  

  if(!
$dir
  {  
     return 
0;  
  }  
  
     while (
$entry readdir($dir)) 
     {  
            if (
is_dir($address."/".$entry) && ($entry != ".." && $entry != "."))  
            {                             
                      
file_search($address."/".$entry$time);
            }  
            else 
            { 
                       if (
$entry != ".." && $entry != "."
                       { 
                           
$fulldir $address.'/'.$entry
                           
$last_modified filemtime($fulldir); 
                           
$last_modified_strdate("Y-m-d H:i:s"$last_modified); 
    
                           if (
$time $last_modified
                           { 

                              
$tab_ array_merge($tab_, array($time => '~czas '.$last_modified_str.' &gt;&gt; '.$fulldir));
                               
                           } 
  
                       } 

            }
      }
 
      return (
$tab_);        



/* ====================================================== *\ 

   Przykład wykorzystania:  

\* ====================================================== */ 


$dir 'C:\DYSK E\eMule2\Incoming'// lub $dir = './'; dla katalogu głównego w którym działa skrypt 

$czas "2007-02-23 00:00:00"// pliki z daty 2007-02-23 00:00:00 i nowsze  

$array_pliki = &file_search($dirstrtotime($czas)); // tablica z plikami

natsort($array_pliki); // sortowanie (porządek naturalny) 

// Tworzenie nowej tablicy, porządek odwrotny

$i 1;
foreach (
$array_pliki as $value)
{
         
$tab_sort[$i] = $value
         
$i++; 
}

arsort($tab_sort); 

// wyświetlanie danych

foreach ($tab_sort as $value)
{
         echo 
$value."<br>\n"
}

?>  






Artykuł jest z Twoja-Strona.Net
http://twoja-strona.net/html

Adres tego artykułu to:
http://twoja-strona.net/html/Biblioteka_Art1241.html