IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

unset des variables [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut unset des variables
    Bonjour,

    Est-il utile de faire systématiquement des "unset" de ses variables afin d'optimiser l'espace mémoire , pour les décharger, ou avant de les reattribuer ?

    Dites moi si les exemples suivants ont un intérêt ?

    Exemple 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // en vrac
    $toto = "chaine";
    unset($toto);
    $toto = 2;
    Exemple 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // dans des classes
    maClasse::maMethode {
      $this->propriete = "chaine";
      unset($this->propriete);
      $this->propriete = 2;
    }
    Exemple 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // en fin de script
    unset($toto);
    ?>
    Exemple 4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // a la destruction d'une classe
    maClasse::__destroy{
      unset($this->propriete)
    }
    Merci pour vos avis.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    // dans des classes
    maClasse::maMethode {
    $this->propriete = "chaine";
    // unset($this->propriete);
    $this->propriete = 'nouvelle valeur';
    }

  3. #3
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    En fait, j'ai fait expres de changer de type de donnees en cours de route ^^.

    Je dois comprendre que en cas de reattribution dans une classe, ca n'est pas utile ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Tes variables et fonctions sont libérés en fin de script.

  5. #5
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Ok, j'en conclu que le unset() n'a aucun interet pour liberer des variables dans le cadre de l'optimisation ?

  6. #6
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Aucun intérêt dans les exemples que tu donnes. Cela va même perturber php pour rien car de toute façon, tout est détruit en fin de script. De plus, les variables sont dynamiques (en interne) et php gère très bien l'affectation d'une chaîne à une variable qui était juste avant un integer par exemple.

    Les cas où il peut être conseillé d'utiliser unset() pour libérer la mémoire c'est quand on manipule des ressources qui elles peuvent être gourmandes.

    php 5.3 (la future version) est doté d'un nouveau garbage collector. La mémoire sera encore mieux contrôlée automatiquement.

  7. #7
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    ok merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 11h39
  2. Réponses: 4
    Dernier message: 15/12/2002, 04h19
  3. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44
  4. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo