Script che restituisce il file con data di modifica più recente di una directory

  • Creatore Discussione Creatore Discussione atonyc
  • Data di inizio Data di inizio

atonyc

Utente Attivo
10 Dic 2008
67
0
0
Come da oggetto, qualcuno sa se con php è possibile?
Mi spiego meglio lo script deve andare ad analizzare il contenuto di una directory e come risposta restituire il nome del file con data di modifica più recente.
 
ciao
però il tuo script restituisce la data dell'ultimo aggiornamento, ma non il nome del file.
@ atonyc: prova in questo modo

PHP:
<?php
$files = glob('cartella/*.*'); 
$mtimes = array(); 
foreach($files as $f) 
{ 
    if(file_exists($f))
		$file=str_replace(".","_0_",$f);//tolgo il punto che da fastidio
        $mtimes[$file] = filemtime($f); //li chiavi dell'array sono il nome dei files (modificato)
} 
$ultimo=max($mtimes);
$chiave=array_search($ultimo, $mtimes);
$chiave=str_replace("_0_",".",$chiave);//rimetto il punto
echo "il file ".$chiave." è stato aggiornato il ".date("d m Y H:i:s",$ultimo);
?>
 
Sì, mi ero dimenticato. Comunque non vedo per quale motivo tu debba togliere il punto. Le chiavi dell'array lo possono benissimo contenere. Quindi:
PHP:
<?php
$files = glob('directory/*.*');
$mtimes = array();

foreach($files as $f)
    $mtimes[$f] = filemtime($f);

$last = max($mtimes);
$file = array_search($last, $mtimes);
?>
 
Grazie ragazzi lo script funzione perfettamente.. solo 1 cosa
è possibile se il file non esiste fare in modo che lo script non dia errore
 
ciao
se il file non esiste glob non lo rileva, l'unica dovrebbe essere se la cartella è vuota
adesso guardo cosa dovrebbe restituire glob poi ti so dire.
 
ciao
se non ci sono file restituisce un array vuoto. prova così

PHP:
<?php 
$files = glob('cartella/*.*');  
if(!empty($files){
	$mtimes = array();  
	foreach($files as $f)  
	{  
    	if(file_exists($f)) 
        	$file=str_replace(".","_0_",$f);//tolgo il punto che da fastidio 
        	$mtimes[$file] = filemtime($f); //li chiavi dell'array sono il nome dei files (modificato) 
	}  
	$ultimo=max($mtimes); 
	$chiave=array_search($ultimo, $mtimes); 
	$chiave=str_replace("_0_",".",$chiave);//rimetto il punto 
	echo "il file ".$chiave." è stato aggiornato il ".date("d m Y H:i:s",$ultimo);
}else{
	echo "nella cartella non ci sono files";
}
?>
 
Perfetto ora funziona alla grande, solo una cosa se io volessi che lo script mi restituisca il nome dell'ultimo file solo se la sua data di modifica è uguale alla data del server ( come riferimenti ovviamente solo mese e anno ).

Per intenderci:
il giorno 10/2010 inserisco un file nel server, io vorrei che lo script me lo facesse visualizzare solo il 10/2010.

spero di esser stato chiaro.
 
ciao
guarda se è questo che intendevi
PHP:
<?php
$files = glob('cartella/*.*');
$ieri=time()-(24*60*60);//leggo la data timestamp di 24 ore fa'
if(!empty($files)){ 
    $mtimes = array();   
    foreach($files as $f)   
    {   
        if(file_exists($f))  
            $file=str_replace(".","_0_",$f);//tolgo il punto che da fastidio  
            $mtimes[$file] = filemtime($f); //li chiavi dell'array sono il nome dei files (modificato)  
    }   
    $ultimo=max($mtimes);
	if($ultimo < $ieri){
		echo "non ci sono file aggiornati nelle ultime 24 ore";
	}else{
    	$chiave=array_search($ultimo, $mtimes);  
    	$chiave=str_replace("_0_",".",$chiave);//rimetto il punto  
    	echo "il file ".$chiave." è stato aggiornato il ".date("d m Y H:i:s",$ultimo);
	}
	
}else{ 
    echo "nella cartella non ci sono files"; 
} 
?>
 
e se volessi visualizzare solo i file inseriti nello stesso giorno e non nel mese incorso
 
ciao
lo script che ti ho inviato tira fuori il file inserito nelle ultime 24 ore
PHP:
$ieri=time()-(24*60*60);//leggo la data timestamp di 24 ore fa'
 
ottimo script

Ciao,
vorrei utilizzare questo script per una parte di codice che sto scrivendo..
La mia idea è che lo script, dopo aver individuato il file più recente, cerchi anche tutti gli altri file che hanno lo stesso nome (tranne gli ultimi tre caratteri) e poi uploadi tutto sulla cartella di un server ftp remoto.
Mi aiutate?
Grazie mille!:book:

script per fare un backup da server a server
Ciao ragazzi,
avrei bisogno di scrivere un semplice script di backup, che faccia la copia di una serie di files el tipo site-www.miosito.net-20110313-192632.jpa
già creati in automatico dall'ottimo akeeba backup, ad un altro server, entrando via ftp.

Ci sono due cose però:

1- sul server di partenza lo spazio è illimitato, ma la dimensione di ogni file non può essere superiore ai 4 mb, quindi i vari files saranno fatti a pezzetti dall'ottimo akeeba backup, del tipo site-www.miosito.net-20110313-192632-001.jpa site-www.miosito.net-20110313-192632-002.jpa etc....
Quindi terrò l'opzione di mantenere sul server tutti i backup senza mai cancellarli, però a pezzetti, e il numero di pezzetti sarà variabile, perchè il sito potrebbe ingrandirsi/rimpicciolirsi in base a quello che succede.

2- sul server di arrivo non solo lo spazio a disposizione è limitato, ma anche la banda è molto ridotta, quindi ci trasferirei, di giorno in giorno, solo l'ultimo dei bakup fatti sull'altro sito.

dunque in sostanza lo script di backup periodicamente (avvio impostato sul cron del server):

1- controlla data e ora dei file nella cartella preposta e sceglie i più recenti, eseguendo un loop fino ad individuarne tutte le parti
2- apre una connessione ftp con il server remoto e copia il tutto in una cartella tempornea verificando che l'operazione sia andata a buon fine, altrimenti riprova finchè non ce la fa
3- fa piazza pulita di ciò che trova nella cartella preposta e poi ci sposta dentro i file della cartella temporanea

Che ne dite? Sapete di qualcosa di già fatto?
Forse con qualche smanaggiamento questo potrebbe andare bn,,,
 

Discussioni simili