[ zgas @ 30.09.2008. 13:01 ] @
Imam variablu $V1 koja ima dosta podataka npr 100Kb.
interesuje me ako kopiram ovu variablu u drugu, trecu ... da li ce se zauzeti vise memorije?

$V2 = $v1;
$V3 = $v1;
$V4 = $v1;

Znaci da li ce sada biti zauzeto 400kb memorije?
Da li ima nekog bitnog usporenja i bitnog zauzimanja resursa kod velikih aplikacija sa vecim variablama i vecim brojem kopiranja?

Molim vas ako sigurno znate, ja ne mugu sada da testiram jer imam puno posla.

Hvala vam.
[ Miroslav Ćurčić @ 01.10.2008. 13:59 ] @
Hoće,
da,
ima kod većih zauzeća.

A što ne bi testirao, to je 10 minuta posla, lakše je čekati da neko odgovori na forumu ?
[ centaur @ 04.10.2008. 22:55 ] @
Mozeš da ih kopiraš po referenci.

Code:
$a = "neki sadrzaj proemnjive";
$b = &$a;


Ovako se neće kopirati sadržaj promenjive $a kada kreiraš $b
već će $b "pokazivati" na isti deo memorije gde je smeštena vrednost promenjive $a.

PS Nije mi jasno u kojoj situaciji ti je potrebno da to uradiš?!

[Ovu poruku je menjao centaur dana 05.10.2008. u 17:35 GMT+1]
[ afwt @ 05.10.2008. 05:48 ] @
Dokumentacija PHPa kaze da se ne odvaja posebna memorija i ako se kopira varijabla, dok god se ne promeni. Dakle:

$x = $y; // i dalje isto memorije
$x .= ''; // duplira memoriju

isto kao sto i:
$x = '' . $y; // duplira memoriju
[ centaur @ 05.10.2008. 10:00 ] @
^Potpuno tačno a nisam imao pojma da je to tako :)

PS Evo i objasnjenja posto je ovo svakako interesantno a verujem da mnogo ljudi to nezna (ukljucujuci i mene do malopre):
Osim naziva, vrednosti, tipa promenjive PHP engine za svaku promenjivu pamti i to da li je vrednost referenca na neku drugu promenjivu i broj referenci.
Kada se dodeli vrednost nekoj varijabli:
Code:
$a = 'zikica';

zapamti se njena vrednost, setuje se da to nije referenca i postavi se broj referenci na 0.

Sada kada se ta varijabla dodeli nekoj drugoj varijabli:
Code:
$b = $a

PHP engine nece napraviti kopiju u memoriji, vec ce napraviti varijablu $b gde ce setovati da to jeste referenca na neku drugu varijablu( na $a) i toj drugoj varijabli ($a) ce promeniti broj referenci na 1.
Tek kada se promeni vrednost $b, PHP ce kreirati tu promenjivu u memoriji, setovati da to nije referenca na drugu varijablu ($a u ovom slucaju) i vratiti broj referenci varijable $a na 0.



PS2 @dakipro: thanks, lapsus

[Ovu poruku je menjao centaur dana 05.10.2008. u 14:39 GMT+1]
[ dakipro @ 05.10.2008. 13:23 ] @
Da nisi hteo da kazes
Code:

$b = $a 

?
Kako ni ja ovo nisam znao do malpre, mozda i ovde gresim pa si napisao ispravno?
[ Miroslav Ćurčić @ 06.10.2008. 14:36 ] @
@afwt, nisam ni ja znao za to,
baš sam isprevrtao dokumentaciju i ne mogu to pronaći, gde si to video?
[ beep @ 06.10.2008. 15:38 ] @
http://www.php.net/manual/en/language.references.whatdo.php ...
[ dakipro @ 06.10.2008. 15:45 ] @
Pa ja preleteh ovo na brzinu, i ce vidim bas ovo sto si ti malopre spomenuo
Mozes li da pastujes deo citata koji ovo opisuje pls? Sad me zivo zanima ova teorija, iako ima smisla, samo zelim da vidim to napisano negde
[ centaur @ 06.10.2008. 15:55 ] @
http://news.php.net/php.internals/18956
I detaljnije kako to radi:
http://www.derickrethans.nl/fi...arch-php-variables-article.pdf

PS U clanku je opisano za PHP 4
[ zgas @ 07.10.2008. 21:12 ] @
I ja sam ovo proverio empiriski (php5.2.6) i zaista je tako kako je napisao 'centaur'.