Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapis dużych plików
Demoneos
post 13.08.2011, 12:55:17
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Napisałem taki skrypt:
  1. <?php
  2. $from = fopen("plik_wejsciowy", "rb");
  3. while ( ! feof( $from ) ) {
  4. $content_from .= fread($from, 8192);
  5. }
  6.  
  7. $to = fopen("plik_wyjsciowy", "wb");
  8. fwrite($to, $content_from);
  9. fclose($from);
  10. fclose($to);
  11. ?>

który dzieli plik wejściowy na małe części i łączy je z powrotem w pliku wyjściowym. Dla pliku o wielkości 12 MB działo prawidłowo, niestety gdy plik wejściowy miał 350 MB, skrypt podziałał kilkadziesiąt sekund i się zatrzymał nawet nie tworząc pliku wyjściowego. Podejrzewam więc, że po prostu zmienna $content_from miała zbyt duży rozmiar i skrypt się zawiesił. Spróbowałem więc napisać to w ten sposób, że skrypt pobierał po małym segmencie z pliku wejściowego i od razu zapisywał do pliku wyjściowego:
  1. <?php
  2. $from = fopen("plik_wejsciowy", "rb");
  3. $to = fopen("plik_wyjsciowy", "wb");
  4. while ( ! feof( $from ) ) {
  5. $content_from = fread($from, 8192);
  6. fwrite($to, $content_from);
  7. }
  8.  
  9. fclose($from);
  10. fclose($to);
  11. ?>


ale to nie działa nawet dla małych plików - tworzony jest plik wyjściowy, ale ciągle ma rozmiar 0 MB. Co więc robię źle? Jak powinno się zapisywać duże pliki?


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 13.08.2011, 13:28:02
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


set_time_limit ustaw na 0 i będzie śmigał, po prostu kończył się czas wykonywania skryptu jak dla mnie


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Demoneos
post 13.08.2011, 13:53:16
Post #3





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Tak, tak - teraz działa dobrze smile.gif Wcześniej był jeszcze taki problem, bo podałem skryptowi jakiś uszkodzony plik wejściowy. Teraz działa dobrze, nawet z plikami o wielkości kilka giga smile.gif

Ten post edytował Demoneos 13.08.2011, 13:53:39


--------------------
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: 13.07.2025 - 01:12