Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Fopen a readfile
tabbi
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Witam,

jak jest zasadnicza różnica pomiędzy tymi dwoma kodami:

  1. $fp = fopen($fileLink, 'r') or die ("404");
  2. header("Pragma: no-cache");
  3. header("Content-Type: application/x-unknown");
  4. header("Expires: 0");
  5. header("Content-Length: ".$file['size']);
  6. header("Content-Transfer-Encoding: binary");
  7. @header('Content-Disposition: attachment; filename="'.$file['filename'].'"');
  8. if(!fp) exit; // if $fp is not a valid stream resource, exit
  9. fseek($fp,$byte_from);
  10. while(!feof($fp)){
  11. //reset time limit for big files
  12. print(fread($fp,1024*8));
  13. flush();
  14. }
  15. fpassthru($fp);
  16. fclose($fp);


a

  1. header("Pragma: no-cache");
  2. header("Content-Type: application/x-unknown");
  3. header("Expires: 0");
  4. header("Content-Length: ".$file['size']);
  5. header("Content-Transfer-Encoding: binary");
  6. flush();
  7. readfile($fileLink);


Interesuje mnie ściąganie dużych plików na serwer i wydajność w obciążeniu ? Byłbym wdzięczny na nakreślenie kilku uwag
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




set_time_limit(0); nie daje się w petli.

Co do roznicy: to sobie zmierz czasy oraz zajętość pamięci przy duzym pliku a się dowiesz smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tabbi
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Czytałem na jednym forum ze fopen nie nadaje sie do duzych plików ?
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Zacznijmy od tego, że pierwszy kod jest niepoprawny (włącz wyświetlanie wszystkich błędów).

Cytat
Czytałem na jednym forum ze fopen nie nadaje sie do duzych plików ?
Głupot się oczytałeś. winksmiley.jpg
Go to the top of the page
+Quote Post
tabbi
post
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Okej skonstruowałem coś takiego do zapisu pliku na serwer.

  1. $fh = fopen($nazwa, 'w');
  2. flush();
  3. $ch = curl_init($fileLink);
  4. curl_setopt($ch, CURLOPT_FILE, $fh);
  5. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  6. curl_exec($ch);
  7.  
  8. curl_close($ch);
  9. fclose($fh);


Pytanie czy da sie to czymś zastąpić ulepszyćquestionmark.gif (np. użycie exec() i wget ? nie jest lepszym rozwiązaniem ?)

Ten post edytował tabbi 17.01.2011, 22:13:39
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
(np. użycie exec() i wget ? nie jest lepszym rozwiązaniem ?)

W jakim celu?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
tabbi
post
Post #7





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Wydajnościowym, zmniejszenie obciążenia serwisu ?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak, ale pobierasz wtedy dwa razy.

A przecież możesz otworzyć dwa strumienie - jeden do odczytu, drugi do zapisu (przez fopen; jeśli dobrze poczytasz, to zobaczysz, że ma naprawdę potężne możliwości) i kopiować dane z jednego na drugi.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 22.08.2025 - 07:03