WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP - unset()'s betydelse (https://www.wn.se/forum/showthread.php?t=3458)

Filip 2004-09-03 22:02

Hur stor betydelse har funktionen unset() egentligen? Är det något som folk varmt rekommenderar? eller är det skit samma i serverkapacitetshänseende?

elofsson 2004-09-03 23:20

Menar du alltså att man ska köra unset() efter varje variabel i scriptet när man inte behöver använda den mer? Känns dumt i så fall.

Jag använder aldrig funktionen mer än när jag just behöver den. Alla variabler "unsetas" ju ändå när scriptet körts klart.

Jester 2004-09-03 23:43

Citat:

Originally posted by Filip@Sep 3 2004, 22:02
Hur stor betydelse har funktionen unset() egentligen? Är det något som folk varmt rekommenderar? eller är det skit samma i serverkapacitetshänseende?
Variabler i PHP-script är väl ändå bara lokala och "förintas" då scriptet körts?

Hur processkrävande skulle i sådana fall ett script vara för att detta skulle överhuvudtaget märkas?

Per 2004-09-04 00:42

Hanterar du exempelvis stora arrayer kan unset vara till hjälp för att frigöra minne. Generellt sett används den nog måttligt för att hjälpa prestandan.

grazzy 2004-09-04 02:09

PHP har en garbage collector, det innebär att den rensar alla variabler som inte har nån referens till sig. Vilket normalt inträffar när scriptet körts klart.

Det mao rätt så ointressant att använda unset annat än för att markera att en variabel är "död". Däremot kan det vara intressant att se till att kopplingar till databaser osv kopplas ner.

Per 2004-09-04 10:16

Citat:

Originally posted by grazzy@Sep 4 2004, 02:09
PHP har en garbage collector, det innebär att den rensar alla variabler som inte har nån referens till sig. Vilket normalt inträffar när scriptet körts klart.

Det mao rätt så ointressant att använda unset annat än för att markera att en variabel är "död". Däremot kan det vara intressant att se till att kopplingar till databaser osv kopplas ner.

Jag håller helt med dig, men garbage collectorn sätter som du säger inte igång förrän scriptet har gått och dött.

Kod:

<?php
echo memory_get_usage()."\n";
for ($i=0;$i<100000;$i++) {
 $arr[] = rand(0, 10000000000);
}
echo memory_get_usage()."\n";
unset($arr);
echo memory_get_usage()."\n";
?>

Ger t.ex:

Citat:


14112
6138552
28472


grazzy 2004-09-04 11:05

Tja.. det där känns väl inte som en grej som man gör så ofta :)
Sparar hundratusen slumpmässiga tal i en array dvs.

Men om man gör det så kan det väl kanske vara ide att slänga arrayen lite då och då.. 5,8mb minnesanvändning är juh inte så farligt det heller.. såvida du inte har många samtida users.

elofsson 2004-09-04 13:39

Citat:

Originally posted by grazzy@Sep 4 2004, 02:09
Däremot kan det vara intressant att se till att kopplingar till databaser osv kopplas ner.
Är inte det ganska onödigt? Anslutningen till databasen kopplas ju ändå ner när scriptet körts klart. Om man inte använder mysql_pconnect() vill säga.

Jag brukar sällan använda mysql_close() för att stänga anslutningar till databasen. Jag startar anslutningen då den behövs och sen låter jag den vara öppen tills scriptet körts klart. Är det fel och finns det några nackdelar med det förfarandet?

Yannelos 2004-09-05 12:55

Citat:

Originally posted by elofsson@Sep 4 2004, 13:39
Jag brukar sällan använda mysql_close() för att stänga anslutningar till databasen. Jag startar anslutningen då den behövs och sen låter jag den vara öppen tills scriptet körts klart. Är det fel och finns det några nackdelar med det förfarandet?
Jag gjorde så förut tills jag fick felet "Too many connections to ...." eller något liknande, det var ca 3 år sedan så jag vet inte om det var för att det vara en tidigare version av php eller liknande, men det blev iaf fel så jag använder alltid mysql_close().

Sen jag började med det har felet aldrig kommit upp igen, så det kan vara en tanke att alltid stänga den....

mvh
Andreas


Alla tider är GMT +2. Klockan är nu 01:24.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson