Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Przeszukiwanie katalogów w poszukiwaniu pliku
mundek88
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 26.04.2007

Ostrzeżenie: (0%)
-----


Witajcie,
posiadam folder główny a w nim mnóstwo innych podkatalogów i podkatalogów podkatalogów itd.
Nie ma stałego ich ułożenia,
np. raz jest folder_glowny/podfolder
a raz folder_glowny/xyz/zaq/abcd/

i teraz chciałbym przeszukać wszystkie pliki (łącznie ze wszystkimi podkatalogami) w poszukiwaniu pliku _mini.jpg - takich plików jest sporo, więc kazdego znalezionego adres dodac do tablicy.

Nie mam pojęcia jak się za to zabrać...
pozdrawiam
Go to the top of the page
+Quote Post
kicaj
post
Post #2





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


Iteracja katalogow, bylo, poszukaj na forum!


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


glob()

Albo iteratorami: Iteratory w PHP, czyli stare nowe SPL :: Filtrowanie wyników
Go to the top of the page
+Quote Post
Mordoran
post
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


  1. <?php
  2. if ($handle = opendir($nazwa_katalogu)) { // proba otwarcia katalogu z parametru
  3. while (false !== ($file = readdir($handle))) {
  4. if ($file == "_mini.jpg" ) {
  5. // zapisz do tablicy ze jest plik
  6. }
  7. //sprawdzaj czy sa katalogi w tym katalogu
  8. }
  9. closedir($handle);
  10. }
  11. ?>


i dalej rekurencja bym polecial


--------------------
I WANT TO BELIEVE
Co to, to nie mogę powiedzieć 8)
--==SGC SG1==--
<<Jaffa Kree!!!>>
Go to the top of the page
+Quote Post
mundek88
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 26.04.2007

Ostrzeżenie: (0%)
-----


ej, to jest mój pierwszy skrypt w php...
ten kod co podałeś nie odpala...

Cytat
//sprawdzaj czy sa katalogi w tym katalogu

no włąśnie na tym mój problem polega..
jak to zrobić ?

Ten post edytował mundek88 24.08.2007, 10:06:14
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(mundek88 @ 24.08.2007, 11:04:39 ) *
ej, to jest mój pierwszy skrypt w php...
No i?
Cytat(mundek88 @ 24.08.2007, 11:04:39 ) *
ten kod co podałeś nie odpala...
Pierwszy skrypt nie zwalnia Cię z myślenia. Jeśli oczekujesz gotowca to od razu sie wyloguj i nie wracaj.
Forum służy do pomocy.

Dostałeś linki i słowa kluczowe a także prowizryczny kod. Spróbuj coś wykombinować a jak nie to pokaż nam co osiągnąłeś a my Ci pomożemy.

Zapraszam do Przedszkola (przenoszę wątek).
Jeśli zaczynasz z PHP to po co pchasz się na PHP?
Go to the top of the page
+Quote Post
mundek88
post
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 26.04.2007

Ostrzeżenie: (0%)
-----


naskrobałem coś takiego:
  1. <?php
  2.  
  3. $objDir = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( '.xyz/' ) );
  4.  
  5. foreach( $objDir as $objFile )
  6. {
  7. if (basename($objFile) == "_mini.jpg") {echo $objFile. '<br>';}
  8. }
  9. ?>

Działa jak należy, ale długo nie nacieszyłem się działaniem skryptu.
Cytat
Fatal error: Maximum execution time of 30 seconds exceeded in D:\index.php on line 5

Jak to obejść ?

Ten post edytował mundek88 24.08.2007, 10:17:19
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Zwiększyć czas na wykonanie skryptu w pliku php.ini.
Masz pewnie dużo plików (a jeszcze rekurencja jest) i przeszukanie wszystkie zajmuje więcej czasu niż skrypt ma zarezerwowane.
Go to the top of the page
+Quote Post
mundek88
post
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 26.04.2007

Ostrzeżenie: (0%)
-----


Cytat(mike @ 24.08.2007, 11:19:17 ) *
Zwiększyć czas na wykonanie skryptu w pliku php.ini.
Masz pewnie dużo plików (a jeszcze rekurencja jest) i przeszukanie wszystkie zajmuje więcej czasu niż skrypt ma zarezerwowane.

zgadza się to dobiero część znalezionych plików, dlatego zależało by mi na optymalizacji tego.
Da się napisać to jakoś w sposób skracający czas wyszukiwania ? smile.gif
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Spróbuj z użyciem glob() albo tradycyjnie, proceduralnie: opendir(), readdir(), closedir() i fnmatch() zamiast Iteratorów.
Nie mnie jednak może nie być rezultatów. Przeszukiwanie plików jest czasochłonne i czas ten możesz zmniejszyć tylko nieznacznie.
Go to the top of the page
+Quote Post
--Ana--
post
Post #11





Goście







Cytat(mundek88 @ 24.08.2007, 10:16:38 ) *
naskrobałem coś takiego:
  1. <?php
  2.  
  3. $objDir = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( '.xyz/' ) );
  4.  
  5. foreach( $objDir as $objFile )
  6. {
  7. if (basename($objFile) == "_mini.jpg") {echo $objFile. '<br>';}
  8. }
  9. ?>

Ten przykład listuje tylko bieżący katalog i podkatalogi ale już nie podkatalogi.
Jeśli utworzę katalog: c:\1\2\3 to powyższy przykład wyświetli:
\1
\1\2

Dlaczego nie przeszukuje w głąb wszystkich?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:03