n° 185
Maggio/Giugno 2013
Maggio 25, 2013, 10:31:16 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Riconoscimento file immagine più recente e cancellazione degli altri  (Letto 1005 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Kyuzo88
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 78


Mostra profilo
« inserita:: Giugno 18, 2011, 04:41:24 am »

Salve a tutti ragazzi..
Mi servirebbe un codice che sia più veloce di quello che utilizzo.
Tale codice dovrebbe stampare a video il nome del file .jpg più recente e cancellare tutti gli altri nella stessa cartella. Inoltre so che in quella cartella ci saranno solo file .jpg, quindi si può omettere il codice che verifica l'estensione dei file etc.. I file hanno un nome simile a questo :

00B8000031DA(002bdrr)_0_20110618033625_19488.jpg

dove : 00B8000031DA(002bdrr) : nome fisso
_0_ : numero sequenziale :
20110618033625  : Data
19488 : Altro numero sequenziale.

Quindi immagino che si potrebbe usare anche un ordinamento per nome al posto della verifica della data.
Dipende da quale sia più veloce. Infine mi servirebbe che quando si esegue la funzione unlink per la cancellazione del file non venga stampato a video il numero 1 che significa cancellato con successo.
Il codice che utilizzo io ora, ma che è piuttosto lento è :

Codice:
<?php
$dir
'../snap1/';
    
$imgs = array();

    if (
$dh opendir($dir)) {
        while ((
$file readdir($dh)) !== false) {
            if (!
is_dir($file) && preg_match("/\.(bmp|jpe?g|gif|png)$/"$file)) {
                
array_push($imgs$file);
            }
        }

        
closedir($dh);
    } else {
        die(
'cannot open ' $dir);
    }
$ind='http://www.indirizzo.it/snap1/';
$class="";
    foreach (
$imgs as $idx=>$img) {
        
$class = ($idx == count($imgs) - $img  unlink($dir.$img));

    }
echo $class;
?>


Vi ringrazio anticipatamente.
Registrato
mega_saiyan
Sr. Member
****

Karma: +16/-15
Scollegato Scollegato

Messaggi: 985


Mostra profilo
« Risposta #1 inserita:: Giugno 21, 2011, 08:02:52 am »

Quindi immagino che si potrebbe usare anche un ordinamento per nome al posto della verifica della data.
Dipende da quale sia più veloce.

Sulla velocità di esecuzione delle due istruzioni non posso aiutarti (fai entrambe le versioni e vedi quale è più veloce) ma  sul codice provo a darti un paio di consigli:
1-) Se si suppone che mentre esegui questo codice non possa essere creata una nuova immagine, invece di calcolare ogni volta il valore di count, potresti memorizzare tale valore in una variabile.
2-) Perchè esegui prima un ciclo per riempire un array e poi un altro ciclo per verificare l'array. Al posto tuo invece di eseguire l'istruzione:
Codice:
array_push($imgs, $file)
eseguirei:
Codice:
$class = ($idx == count($imgs) - 1 ? $img  : unlink($dir.$img));

In relazione al fatto che ti compare 1 invece di eseguire l'operatore ternario usa un classico if.
Infine ti segnalo questo link: http://stackoverflow.com/questions/5448374/get-last-modified-file-in-a-dir che ti può essere utile se vuoi provare a creare la versione basata sulla data di ultima modifica.


Spero di esserti stato utile.


Piero Astolfi
Registrato
Kyuzo88
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 78


Mostra profilo
« Risposta #2 inserita:: Giugno 21, 2011, 04:01:21 pm »

Grazie Piero per l'onnipresenza  Ghigno

Comunque ho risolto in questo modo : appena viene caricata la pagina cancello tutte le immagini tranne le ultime 2 in questo modo :

Codice:
set_time_limit(0);
$file = scandir('snap1/');
for($i=0; $i < count($file)-3 ; $i++){
@unlink('snap1/'.$file[$i]);
}

Successivamente prelevo la penultima immagine così :

Codice:
<?php
$file 
scandir('../snap1/');
echo 
$file[count($file)-2];
exit();

?>

In questo modo non rischio neanche di caricare un'immagine che ancora non ha finito di essere uploddata sul server. Questo script va bene dato che le immagini le prende in ordine alfabetico  Ghigno
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page