Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zapis plików?
Forum PHP.pl > Forum > PHP
Babcia@Stefa
Witam, który ze sposobów będzie szybszy?

1.

  1. <?php
  2. $fp = fopen('duzy_plik.rar', 'r');
  3.  
  4. while (!feof($fp))
  5. {
  6.    file_put_contents('duzy_plik_kopia.rar', fgets($fp, '2048'));    
  7. }
  8.  
  9. fclose($fp);
  10. ?>


czy

2.

  1. <?php
  2. $fp = fopen('duzy_plik.rar', 'r');
  3. while (!feof($fp))
  4. {
  5.    $i++;
  6.    $Data .= fgets($fp, '2048');
  7.    
  8.    if($i == 20)
  9.    {
  10.        file_put_contents('duzy_plik_kopia.rar', $Data);
  11.        $Data = NuLL;
  12.        $i = 0;
  13.    }
  14.    
  15.    
  16. }
  17.  
  18. if($i < 21 AND $Data != NuLL)
  19. {
  20.    file_put_contents('duzy_plik_kopia.rar', $Data);
  21. }
  22.  
  23. fclose($fp);
  24. ?>


Zależy mi aby zapisywać plik co jakiś czas, aby inny skrypt mógł monitorować postęp ściągania smile.gif (chodzi tu o system aktualizacji)

@edit
Kody nie były testowane, pisałem je "z palca" tongue.gif

Pozdrawiam, WebNuLL.
erix
Z tego, co pamiętam, to jeśłi to tylko możliwe, to należy korzystać z file_get_contents" title="Zobacz w manualu PHP" target="_manual/file_put_contents" title="Zobacz w manualu PHP" target="_manual, gdyż korzystają one z mapowania pamięci, w przeciwieństwie do zwykłych funkcji operujących na plikach.

Jednak miałem rację, w manualu nawet jest:
Cytat
file_get_contents() is the preferred way to read the contents of a file into a string. It will use memory mapping techniques if supported by your OS to enhance performance.


edit: czytasz zawartość pliku, a otwierasz do zapisu. winksmiley.jpg

  1. <?php
  2. $fp = fopen('duzy_plik.rar', 'w');
  3. ?>
winksmiley.jpg
Babcia@Stefa
Ups, zmieniłem winksmiley.jpg

Dzięki, ale nie mogę użyć file_get_contents bo muszę sprawdzać ile pliku już zapisano (aby pokazywać % ukończenia).

@edit
Udało mi się zmierzyć czasy smile.gif

1. 22.5466649532

2. 22.4165239334

Nie wielka różnica, użyję jedynki smile.gif

Pozdrawiam, WebNuLL
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.