Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> czyszczenie katalogu z fotkami, 10000 plików w jednym katalogu
chomiczek
post 7.02.2006, 20:53:52
Post #1





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Mam pewnien problem, a mianowicie mam ok 10000 plików w jednym katalogu, jednak tylko 7500 jest mi potrzebnych, tzn. uzywanych czy gdzieś tam wyświetalnych przeze mnie.. musze w jakiś sposób skasować te zbędne pliki..
z bazy mogę wygenerować sobie nazwy plików, ale tylko do tych, które są mi potrzebne.. czyli do tych 7500 w jaki sposób wykasować pozostałe pliki, tzn. te, które nie będą przeze mnie wygenerowane.
Pomysły, które rozważam to np.:

1. Pobranie z bazy nazwy pliku i zmiana nazwy tego pliku np. na OK_nazwapliku, a następnie wykasowanie tych plików, które nie mają na początku OK_.

2. Drugi pomysł (chociaż chyba mało wydajny) miałby polegać na wpisaniu całości nazw plików do jednej tablicy (tych, któe mogę wyciągnąć z bazy), potem wpisanie zawartości katalogu do drugiej tablicy i ich porównanie. Zastanawiam się na porównaniem, a mianowicie.. jeśli nazwa pliku z katalogu nie znalazłaby się w tablicy z nazwami plików z bazy to plik jest kasowany.. problem taki, że takie porównanie musiałoby byc powtórzone 10000 razy!!

Żeby było ciekawiej 10000 zdjęć jest w 3 katalogach, czyli tak naprawę muszę ten skrypt powtórzyć 3 razy dla każdego katalogu oddzielnie (są tam różne pliki)..

Jak myślicie, które rozwiązanie jest lepsze, szybsze, wydajniejsze.. a może jest jakis inny (czyt. łatwiejszy) sposób??


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
ave
post 7.02.2006, 22:25:03
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


ja bym uzyl sposobu 2. porownywanie wcale nie trwa tak dlugo,
ostatnio porownywalem tablice z 1500 elementami z tablice z 17000 elementow + zaladowanie danych z pliku, czas cos kolo 50 sekudn.
Go to the top of the page
+Quote Post
Radarek
post 7.02.2006, 22:28:55
Post #3





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 23.05.2005

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


Gotowca pewnie nikt ci nie podsunie winksmiley.jpg. Zarys bedzie wygladac tak:

  1. <?php
  2. $pliki_z_bazy = pobierz_z_bazy_tablice_nazw_plikow_ktore_chcesz_zostawic();
  3. $pliki_z_katalogu = pobierz_nazwy_plikow_z_wybranego_katalogu();
  4.  
  5. foreach ($pliki_z_katalogu as $plik) {
  6. if (!in_array($plik, $pliki_z_bazy) {
  7. skasuj($plik);
  8. }
  9. }
  10.  
  11. ?>


Dla pewnosci (gdybys sie bal, ze jednak sobie cos skasujesz;)) mozesz te pliki przeniesc do jakiegos innego katalogu.

Ten post edytował Radarek 7.02.2006, 22:29:28
Go to the top of the page
+Quote Post
chomiczek
post 7.02.2006, 23:02:01
Post #4





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Spoko spoko.. niechodzi tutaj o to jak to będzie wyglądało, bo nie ma problemu, żebym nadpisał.. a co do testów.. zawsze robię backup.. po kilku przykrych doświadczeniach nauczyłem sie biggrin.gif


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
Bora
post 8.02.2006, 01:59:32
Post #5





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


dla pewności porównałbym rozmiar.
Go to the top of the page
+Quote Post
chomiczek
post 8.02.2006, 09:01:29
Post #6





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


w tym przypadku nie ma chyba potrzeby porównania rozmiary.. właśnie sprawdzam jak to zadziała.. :/


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
kszychu
post 8.02.2006, 10:03:54
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A masz miejsce, by skopiowac gdzies te potrzebne pliki? Jeśli tak to robisz pętlę w której odczytujesz z bazy nazwę pliku, kopiujesz go do nowej lokalizacji i tak dla wszystkich rekordów. Na koniec wywalasz stary katalog.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
chomiczek
post 8.02.2006, 23:57:02
Post #8





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Już sobie poradziłem.. wpisałem faktyczną zawartość katalogu do jednej pętli, a to co mogłem wyciągnąć z bazy wpisałem do drugije.. następnie poruwnałem zawartośc obu tablic i skasowałem pliki, które nie powinny się znaleźć w katalogu.. skrypt nie wykonywał sie więcej jak 60 sekund (wyczyszczenie 3 katalogów z 10000 zdjęc każdy). Jeśli ktoś będzie chciał to wrzuce listing.. ogólnie podobny do tego co napisał Radarek

Dzięki serdeczne za pomoc.


--------------------
created by chomiczek
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:08