Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: FTP_RAWLIST i zliczanie plików
Forum PHP.pl > Forum > PHP
Kaluza
Witam,

Mam mały skrypt który wykorzystuje ftp_rawlist.
Skrypt ma za zadanie zliczać wszystkie pliki na serwerze FTP.

1) Jak zablokować liczenie katalogów (ma liczyć tylko pliki)?
2) Jak zrobić aby liczył wszystkie pliki, nie tylko te z głównego katalogu?

Bawiłem się "./", wstawiając tam różne opcje ale nic nie pomaga.

  1. <?
  2. $ftp_server = 'mojserwer';
  3.  
  4. $ftp_user_name = 'mojlogin';
  5.  
  6. $ftp_user_pass = 'mojehaslo';
  7.  
  8.  
  9.  
  10. $conn_id = ftp_connect($ftp_server);
  11.  
  12. ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  13.  
  14. echo count( ftp_rawlist($conn_id, "./") );
  15. ?>

nospor
ad2)
http://php.net/manual/en/function.ftp-rawlist.php
chyba u każdego w tym linku widać, że funkcja może przyjmować 3 parametry...

ad1) Zamiast count() to przelec po tej tablicy która dostajesz. Każdy jej element da ci info czy to katalog czy nie
Kaluza
Dodałem wartość true, i nadal zlicza mi pliki z głównego katalogu (bez zawartości podkategorii).


  1. <?
  2. $ftp_server = 'mojserwer';
  3.  
  4. $ftp_user_name = 'mojlogin';
  5.  
  6. $ftp_user_pass = 'mojehaslo';
  7.  
  8.  
  9.  
  10. $conn_id = ftp_connect($ftp_server);
  11.  
  12. ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  13.  
  14. echo count( ftp_rawlist($conn_id, "./", true) );
  15. ?>
nospor
Widać katalog, z którym się łączysz, nie ma już podkatalogów....

./ oznacza katalog bieżący a nie główny.
Kaluza
Katalog z którym się łącze ma 30 katalogów i 2 pliki.
Wynik jaki otrzymuję to 32 - czyli skrypt łączy się z odpowiednim katalogiem.
Tylko nie mam pojęcia dlaczego nie chce wejść do tych 30 katalogów i zliczyć ich zawartość.

Usunąłem ./ i nadal to samo.
nospor
Zrób co ci pisałem.... wyświet sobie jakie konkretnie ci katalogi zwraca. Będziesz wiedział na 100% czy to napewno to.
Kaluza
Ok, sprawdziłem. W tablicy mam te 30 katalogów i 2 pliki (nazwy się zgadzają).
Wygląda na to że nie działa ta rekurencja.
nospor
Widać, system na którym stoi ten ftp, nie obsługuje -R.... W takim wypadku musisz to obsłużyć ręcznie, czyli przeleciec po tablicy i jeśli to katalog, to znowy wykonac ftp_rawlist() tym razem na akutlanie przetwarzanym katalogu
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.