Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Skrypt zżerający ogromne ilości transferu
smietek
post
Post #1





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


Witam.
Mam pewien skrypt, który łączy się 50 razy z pewną stronką przez różne serwery proxy zapisane w pliku przez cUrla.
Na początku wszystko było dobrze, do póki było to rozłożone na dwie części, bo gdy było złączone nie wyświetlało strony. Wtedy skrypt nie zżerał mi tak dużo transferu.
Jednak postanowiłem nieco ulepszyć go, by użytkownicy strony mogli widzieć rezultat skryptu bez konieczności czekania na ostanie połączenie - dlatego użyłem sesji do przechowywania wyników i za każdym połączeniem odświeżałem stronę. Jednak okazało się, że skrypt w jeden dzień zużył mi ok. 1,5 GB transferu (użytkowników mam prawie 3 tysiące, aktywnych więcej niż 3/4).

I teraz moje pytanie: co spowodowało tak wielki wzrost transferu? To, że co połączenie ładuję stronę (wtedy można by to rozwiązać za pomocą iframe) czy to, że przechowuje duże ilości danych w sesji (chociaż to jest po stronie użytkownika)?

Od razu mówię, że pliki graficzne wczytywane do wyglądu strony już zostały skompresowane do jak najmniejszego rozmiaru bez straty jakości.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


ten mój post gdzie obrazek miał wyglądać jak obrazek (zorjentujesz się jak przeczytasz o co chodzi):
http://forum.php.pl/index.php?s=&showt...st&p=626640

i np. taki skrypt do samych obrazków (gdzie w zasadzie ob_start() nie potrzebny - ale exit niby też nie jednak jeśli miały by być jakieś znaki za kodem to dobrym zwyczajem moim zdaniem używać):

  1. <?php
  2. $file=$_GET['co'];
  3. // sprawdź jeszcze sobie np. czy obrazek istnieje - jeśli nie to obrazek z komunikatem if(!file_exists($file))
  4.  
  5. //czy hotlinkują czego nie chcielibyśmy ;) - ale osobno obrazki niech sobie w kartach otwierają do oglądania - to i tak w pełni nie da się zabezpieczyć ale zwykłe hotlinkowanie to i tak dużo...
  6. if((isset($_SERVER['HTTP_REFERER']))?(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)!=$_SERVER['SERVER_NAME']):false)$file='stop_hotlinking_small.gif';
  7.  
  8. $file_last_modification = filemtime ($file);
  9. $gm_file_last_modification = gmdate ("D, d M Y H:i:s T", $file_last_modification);
  10. // jeśli nie zmodyfikowany przerwanie połączenia
  11.  
  12. // Tutaj właściwa część skryptu Cache
  13. $etag = '"'.md5($file.$file_last_modification). '"';
  14. $modified = !isset($_SERVER['HTTP_IF_NONE_MATCH']) || trim($_SERVER['HTTP_IF_NONE_MATCH']) != '*' && strpos($_SERVER['HTTP_IF_NONE_MATCH'], $etag) === false;
  15. if (!$modified){header('HTTP/1.1 304 Not Modified');}
  16. header('ETag: '.$etag);
  17. if (!$modified) exit;
  18.  
  19. header("Content-type: " . image_type_to_mime_type(exif_imagetype($file)));
  20. header('Last-Modified: '.$gm_file_last_modification);
  21.  
  22.  
  23.  
  24. readfile($file);
  25. ob_end_flush();exit;
  26. ?>


możesz też się zainteresować innymi nagłówkami head - np. jaka ma być żywotność obrazka i inne co może w niektórych przeglądarkach też zmniejszyć ilość odpytań serwera - ale skrypt bazowy już masz....

//coś klawiatura zaczyna mi się ciąć...

// ps. - zanim się wysyła nagłówki head nie możesz nic wcześniej do przeglądarki wysłać - a więc pliki tez musza być kodowane bez BOM..

Ten post edytował zegarek84 1.07.2009, 11:22:29
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.08.2026 - 15:35