Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ściaganie plików, problem
Forum PHP.pl > Forum > Przedszkole
Misiek92
Witam pisze skrypt który ma pobierać pliki przez ftp'a, udało mi się zrobić listowanie plików, oraz pobieranie ich, lecz chce żeby przy ściąganiu został pominięty najnowszy plik ii nie mam pojęcia jak to zrobić..

Nazwy plików wyglądają w ten sposób "multiplay_-1001261651-cs_assault.dem", 1001261651 jest data utworzenia 10 - rok, 01 - miesiac, 26-dzien, 1651 - godzina 16.51

O to kawałek skryptu, proszę o jakieś wskazówki jak dobrnąć do celu..

  1. $list = ftp_nlist($conn_id, "/test/");
  2. $ilosc = count($list);
  3.  
  4. var_dump($list);
  5. echo 'Plikow w folderze:'.$ilosc.'<br><br>';
  6.  
  7. $i = 0;
  8. while ($i <= $ilosc)
  9. {
  10. if(strrchr($list[$i],'.') == ".dem") // wyświetla pliki o rozszerzeniu .dem
  11. {
  12. $nazwapliku = substr($list[$i], 16, 200); // wycinamy sama nazwe pliku bez scieżki
  13. fclose(fopen("dem/$nazwapliku","w")); //tworzymy pusty plik
  14. ftp_get($conn_id, "dem/$nazwapliku", $list[$i], FTP_BINARY); //ściagamy plik z serwera
  15. echo ''.$i.'. '.$list[$i].'<br>';
  16.  
  17. }
  18. $i++;
  19. }
darko
Funkcją stat możesz wyciągnąć datę utworzenia/zmodyfikowania.
Misiek92
darko, edytowałem pierwszy post, data jest w nazwie, lecz jak ją wykorzystać ?, poza tym na ftp'ie mamy ftp_mdtm, aa i przypomnę moim celem jest pominięcie najnowszego pliku przy ściąganiu, tylko jak ?
darko
Jak masz w nazwach plików daty, to przejedź pętlą po zmiennej $list, explode na "-" i wyciągnij same daty, następnie, jeśli data jest w takiej postaci 100126
to znajdź największą liczbę, porównując prostym ifem, coś takiego (nie spr. czy działa, ale powinno, jak nie będzie to zamień $tmp[1]; na $tmp[2]; ):

  1. $newest = 0;
  2. foreach($list as $k => $file) {
  3. $tmp = explode("-", $file);
  4. $tmp = $tmp[1];
  5. if($tmp > $newest)
  6. $newest = $tmp;
  7. }

Teraz już masz największą liczbę, następnie w swojej pętli dla każdego pliku sprawdzasz czy nazwa zawiera największą znalezioną liczbę i jeśli tak, to pomijasz, jeśli nie - wyświetlasz.
Misiek92
$newest wypluwa dwie daty: 10012616511001261717
TheSnake
Lub pobrać pierwsze 6 znaków pliku i porównać czy to nie dziś.

@edit, "dziś" możesz pobrać za pomocą funkcji date()
Misiek92
Dziennie jest generowane parędziesiąt plików
darko
pokaż co printuje print_r($list);
powinna to być tylko lista nazw plików, dziwne że $newest zawiera 2 daty :/ hmm... na pewno dobrze wkleiłeś tamten kod?

~TheSnake dzisiejsza data nie oznacza najnowszego pliku, poza tym to nie jest pierwsze 6 znaków.
TheSnake
No to pewnie jak listujesz te pliki to pierwszy (albo ostatni) to plik najnowszy, pętlą zapisujesz to do tablicy, a potem ten najnowszy kasujesz z tablicy.
A jak nie to możesz każdy zapisać do tablicy i potem skasować najnowszy.

~darko myślę, że to serwer publiczny gry CS z HLTV, więc zawsze będzie "dzisiejszy" plik
I chodzi mi o pierwsze 6 znaków z ciągu "1001261651"
Misiek92
Cytat(darko @ 28.01.2010, 14:44:57 ) *
pokaż co printuje print_r($list);
powinna to być tylko lista nazw plików, dziwne że $newest zawiera 2 daty :/ hmm... na pewno dobrze wkleiłeś tamten kod?

~TheSnake dzisiejsza data nie oznacza najnowszego pliku, poza tym to nie jest pierwsze 6 znaków.



  1. [0] => /test/multiplay_-1001261651-cs_assault.dem
  2. [1] => /test/multiplay_-1001261423-de_inferno.dem
  3. [2] => /test/multiplay_-1001261625-awp_india.dem
  4. [3] => /test/multiplay_-1001261559-de_westwood.dem
  5. [4] => /test/multiplay_-1001261515-cs_estate.dem
  6. [5] => /test/multiplay_-1001261717-de_dust2.dem
  7. [6] => /test/multiplay_-1001261533-de_aztec.dem
  8. [7] => /test/multiplay_-1001261449-de_nuke.dem )
darko
No i jest tablica, nie wiem jak Ty ten kod przepisałeś?
Misiek92
  1. foreach($list as $k => $file) {
  2. $tmp = explode("-", $file);
  3. $tmp = $tmp[1];
  4. if($tmp > $newest){
  5. $newest = $tmp;
  6. echo ''.$newest.'<br>';
  7. }
  8.  
  9. }
TheSnake
  1. $newest = 0;
  2. foreach($list as $k => $file) {
  3. $tmp = explode("-", $file);
  4. $tmp = $tmp[1];
  5. if($tmp > $newest)
  6. $newest = $tmp;
  7. }
  8. echo $newest;

..
Misiek92
Dla obu panów leci pomógł wszystko gra i buczy smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.