Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zbyt duże zużycie danych w APACHE, [PHP][APACHE]
Rozpalacz
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 31.01.2006

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


Witam,

mam skrypt, który pobiera stronę internetową cURLem i odpowiednio ją mieli. Skrypt uruchamiany jest codziennie kilkadziesiąt razy. Zazwyczaj zużycie waha się od 1kb do 10mb. W ciągu ostatniego pół roku miałem dwie sytuacje że raz zużycie było 2GB a wczoraj 5GB.
Kod
xxx.xxx.xxx.222 - - [15/Jan/2015:12:25:01 +0100] "GET /ebok/ebok.php HTTP/1.1" 200 5341205253 "-" "Wget/1.13.4 (linux-gnu)"


Szczerze mówiąc nie ma tam żadnych pętli które mogłby by być nieskończone czy niewiadomo jakich obliczeń, dlatego sam nie wiem czemu wyszło aż 5GB.

Czy mogę się w jakiś sposób zabezpieczyć przed pożarciem mi całego limitu transferu? Ustawić jakoś w skrypcie, php.ini czy gdzieś by po przekroczeniu rozmiaru żużycia danych np 100MB przerywało działanie skryptu?

PS.
Podejrzewam, (chociaż nie wiem czy to możliwe by uzyskać 5GB) że takie zużycie mogło wyniknąć w testów, gdy zrobiłem 6 razy dla całego pobranego kodu HTML
Kod
print_r($dom)

wykorzystując PHP Simple HTML DOM Parser
print_r rzeczywiście wypisuje masę różnych rzeczy i strasznie długo to trwa. Ale dobrzeby było wiedzieć jak przerwać takie wykonywanie skryptu.

Ten post edytował Rozpalacz 16.01.2015, 21:19:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Rozpalacz
post
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 31.01.2006

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


Pyton_000, zrobiłem tak jak pisałeś z ini_set('memory_limit', '1M');
  1. <?php
  2. ini_set('memory_limit', '1M');
  3. $a = array();
  4. for($x=1; $x<1000; $x++) {
  5. array_push($a, array('imie'=>'Pablo'.$x, 'nazwisko'=>'picasso'.$x, 'adres'=>'nowowiejska'.$x));
  6. }
  7. print_r($a);
  8. ?>

sytuacja wygląda tak że dostaję komunikat:
Kod
Fatal error:  Allowed memory size of 1048576 bytes exhausted (tried to allocate 72 bytes) in /home/public_html/bench.php on line 5

gdzie w logu Apache samo wykonanie skryptu (bez linijki z ini_set) pożera jakieś 10KB
Kod
xxx.xxx.xxx.134 - - [16/Jan/2015:23:25:50 +0100] "GET /bench.php HTTP/1.1" 200 11146 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"

Teoretycznie powinno się wykonać. Czemu tak się dzieje, czy zużycie transferu Apache a memory_limit to dwie różne rzeczy i nie mają ze sobą nic wspólnego?
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: 13.10.2025 - 12:09