Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pakowanie plików z wykorzystaniem paginacji?
Portek
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 10.11.2008
Skąd: Częstochowa

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


Witam, mam dość poważny problem, otóż potrzebuję funkcji która automatycznie wylistuje do tablicy pliki w folderze, a następnie zacznie je pakować pojedynczo do plików nazwa_pobrana_z_tablicy.bz2. Wszystko było by pięknie gdyby nie sam fakt że nie mogę tego razem połączyć. Funkcja która ma za zadanie wylistować pliki do tablicy robi to, ale działanie skryptu w tym momencie się kończy i nie są pakowane pliki:
  1. <?php
  2. $dir = ".";
  3.  
  4. function scanDirectories($dir, $allowext, $allData=array()) {
  5. $dirContent = scandir($dir);
  6. foreach($dirContent as $key => $content) {
  7. $path = $dir.'/'.$content;
  8. $ext = substr($content, strrpos($content, '.') + 1);
  9.  
  10. if(in_array($ext, $allowext)) {
  11. if(is_file($path) && is_readable($path)) {
  12. $allData[] = $path;
  13. }elseif(is_dir($path) && is_readable($path)) {
  14. $allData = scanDirectories($path, $allData);
  15. }
  16. }
  17. }
  18. return $allData;
  19. }
  20.  
  21. $allowext = array("dem");
  22. $files = scanDirectories($dir,$allowext);
  23. print_r($files);
  24.  
  25. function bzip2 ($p) {
  26. $t = file_get_contents($p);
  27. $sp = bzopen ($p.".bz2", "w");
  28. bzwrite($sp, $t);
  29. bzclose ($sp);
  30. echo 'Spakowano!';
  31. return true;
  32. }
  33.  
  34. $i=0;
  35. while(!isset($files[$i])) {
  36. bzip2($files[$i]);
  37. $i++;
  38. }
  39. ?>


Kolega podsunął mi pomysł aby skorzystać z systemu paginacji, ale to troszke mija się z celem, ponieważ wylistowane pliki musiał bym umieścić w bazie danych, potem pobrać z tamtąd nazwy i pakować pliki. No chyba że istnieje inny sposób, ja siedzę nad tym tydzień i do niczego nie doszedłem...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. while(isset($files[$i])) {

Bez wykrzyknika... Nie łatwiej było użyc foreach?
Jesteś pewien że ta linijką będzie napewno ok?
  1. $allData = scanDirectories($path, $allData);


Ten post edytował wookieb 8.08.2009, 13:06:52
Go to the top of the page
+Quote Post
Portek
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 10.11.2008
Skąd: Częstochowa

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


Cytat(wookieb @ 8.08.2009, 14:06:29 ) *
[PHP] pobierz, plaintext
  1. while(isset($files[$i])) {
[PHP] pobierz, plaintext
Bez wykrzyknika... Nie łatwiej było użyc foreach?

Hmm, może i łatwiej ale początkujący ze mnie skrypter. Po usunięciu "!" pojawił się komunikat:
Kod
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 48659959 bytes) in /home/bbvn45/public_html/dema/pakuj.php on line 26


Cytat(wookieb @ 8.08.2009, 14:06:29 ) *
Jesteś pewien że ta linijką będzie napewno ok?
[PHP] pobierz, plaintext
  1. $allData = scanDirectories($path, $allData);
[PHP] pobierz, plaintext

Myślę że tak choć mogę się mylić, noga jestem z PHP...

Ten post edytował Portek 8.08.2009, 17:42:08
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A sprawdziłeś działąnie funkcjie scanDirectories z podkatalogami?
Go to the top of the page
+Quote Post
Portek
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 10.11.2008
Skąd: Częstochowa

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


Cytat(wookieb @ 8.08.2009, 18:42:14 ) *
A sprawdziłeś działąnie funkcjie scanDirectories z podkatalogami?

Tyle że ja nie mam już podkatalogów, skrypt leży bezpośrednio w folderze z plikami które ma wylistować i spakować.
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




I jaka jest liczba tych plików w katalogu? U mnie działa.
Go to the top of the page
+Quote Post
Portek
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 10.11.2008
Skąd: Częstochowa

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


Jeden + przyznałem, w funkcji był o jeden znak za dużo ("!") dlatego nie działała (IMG:style_emoticons/default/sciana.gif)
Cytat(wookieb @ 8.08.2009, 19:12:45 ) *
I jaka jest liczba tych plików w katalogu? U mnie działa.

Plików jest średnio 5-6 (aktualizowane co ~30min), problem występuje jednak przy pakowaniu tych większych, pliki nierzadko mają rozmiar 100mb+. Problem z pakowaniem występuje już przy tych powyżej 40mb, mimo że miejsca jest jeszcze grubo ponad 40gb...
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Musisz zwiększyć ilość pamięci przyznanej dla skryptu
Memory_limit w php.ini
Go to the top of the page
+Quote Post
Portek
post
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 10.11.2008
Skąd: Częstochowa

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


Cytat(wookieb @ 8.08.2009, 19:49:35 ) *
Musisz zwiększyć ilość pamięci przyznanej dla skryptu
Memory_limit w php.ini

Czyli mój projekt odpadł w przedbiegach... A mogło być tak pięknie i różowo... W każdym bądź razie dziękuje za dotychczasową pomoc. Kolega otrzymuje 2 plusiki. Temat można zamknąć ;-)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 04:29