Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] memory_get_usage a limit?
Forum PHP.pl > Forum > PHP
xsonic
Witam

memory_get_usage pokazuje:

Na początku skryptu: 415076
Na końcu skryptu: 784368
Na końcu po usunięciu dużych zmiennych: 663112

Htop pokazuje zajęte 4Mb a ja ustawiłem ini_set('memory_limit', '1500K');
Więc jak to jest możliwe? Jak zmniejszyć zasobożerność skryptu?

abort
Komentarze pod manualem:
http://pl.php.net/manual/pl/function.memory-get-usage.php

powinny pomóc - nie wiem jaki masz OS, i nigdzie nie umiałem znaleźć, którą wartość memory (VMSize, VMData, VMStk, VMLib...) memory_get_usage zwraca. Jeśli to Linux, to możesz odczytać sobie PID (Process ID) Twojego skryptu za pomocą http://pl2.php.net/manual/pl/function.posix-getpid.php - z potem (jeśli to Linux), to obejrzeć sobie plik /proc/<PID>/status i stamtąd wyciągnąć sobie niezbędne informacje.
erix
Cytat
Htop pokazuje zajęte 4Mb a ja ustawiłem ini_set('memory_limit', '1500K');

A uwzględniłeś fakt, że sam proces interpretera potrzebuje pewnej przestrzeni na to, aby mógł w ogóle działać.

To tak jakbyś miał coś lutować - masz biurko o powierzchni 2m^2 i to jest Twój memory_limit. Ale nie uwzględnisz w nim tego, że musisz gdzieś postawić krzesło, na którym posadzisz swoje cztery litery. [;

Cytat
Więc jak to jest możliwe? Jak zmniejszyć zasobożerność skryptu?

Zależy. Poszukaj na forum, było kilka takich tematów.

Tak opiniując, 1.5 MiB zużytej pamięci na skrypt, to jest nic. I jest bardzo mało prawdopodobne, że zejdziesz niżej.
xsonic
więc jeśli powiązał bym skrypty w 1 prawdopodobnie zeszło by to niżej?

erix zaj...te porównanie smile.gif Tak myślałem że on też tam siedzi smile.gif Wiesz może 4 mb to mało ... ale jak się ma starego celerona i 200mb do użytku to zaczynają się schody smile.gif
A jeszcze jedno ... Da się ustawić limit dla całego procesu?
erix
Cytat
więc jeśli powiązał bym skrypty w 1 prawdopodobnie zeszło by to niżej?

Nie. Cały musi być zinterpretowany i nieużywana część będzie i tak siedzieć w pamięci.

Cytat
Wiesz może 4 mb to mało ... ale jak się ma starego celerona i 200mb do użytku to zaczynają się schody

Jak szkoda Ci kasy na maszynę, to bierz książkę do asemblera i pisz.

Sory, ale poniżej tego limitu raczej nie zejdziesz.

Cytat
A jeszcze jedno ... Da się ustawić limit dla całego procesu?

Da się. Jakie pytanie, taka odpowiedź.
xsonic
Dzięki za odpowiedz:) Więc w jaki sposób ustawić limit dla procesu...?
erix
Zależy od systemu.

Dla FreeBSD bym Ci powiedział ad-hoc, dla Linusków musisz sobie poszukać.
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-2024 Invision Power Services, Inc.