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 :

[Tableaux] Taille des variables


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Points : 13
    Points
    13
    Par défaut [Tableaux] Taille des variables
    Après un petit test je me suis aperçu d'une chose que je ne comprends pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     
    for( $intCompteur = 0 ; $intCompteur < 1000000 ; $intCompteur++)
    {
     
    	$value .= $str;
    	echo $intCompteur.'<br>';
     
    }
    Le script s'arrête à environ 312550 boucles car la variable $value dépasse le poids maximum supporté par PHP

    Je me suis dis, que j'allais essayé de passer par un tableau ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     
    for( $intCompteur = 0 ; $intCompteur < 1000000 ; $intCompteur++)
    {
     
    	$value[] = $str;
    	echo $intCompteur.'<br>';
     
    }
    Et là surprise, au bout de 151665 boucles, la variable dépasse le poids maximum ... alors que l'on stock exactement les mêmes informations ...

    Pourquoi une telle différence d'un type de variable à un autre ??


    Et comment faire pour que stocker dans un tableau seulement le pointeur vers la variable/objet pour avoir un tableau quasiment infini de valeur ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Premièrement un tableau et une chaine ce n'est pas du tout pareil !
    Ton tableau c'est un meuble a tiroir, et ta chaine c'est une chose que tu met dans un tiroir.

    Ensuite pour avoir un tableau de taille supérieur a 151000, je te le conseille pas, meem si tu toruve un moyen, ça me parait beaucoup trop en mémoire , si tu veut vraiment chercher un truc ds le genre regarde du coté des listes, je sais que ça existe dans les langage plus typé (genre java ou c#) mais je sais pas en php.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 132
    Points
    132
    Par défaut
    Il faudrait préciser un peu ce que tu veux faire, parce que concaténer un million de fois une même chaine de caractères, ou la stocker un million de fois dans un tableau ...
    Et pour un un tableau (ou n'importe quelle autre variable) de taille infinie, il va falloir acheter la bécane la plus puissante du monde (enfin, avec une capacité mémoire infinie) ... et ne pas oublier de modifier memory_limit dans php.ini

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    A la base, je cherchais a savoir en gros, combien de caractère pouvait être contenu dans une variable pour voir dans quel direction j'allais aller au niveau de la POO de mon site. (gestion de données de production)

    Donc, j'ai cherché à savoir quel serait la meilleur façon de stocker un maximum d'information pour l'édition de rapport assez lourd.

    Bien que je ne pense pas atteindre autant de caractères.

    C'est en testant la différence entre Tableau et Variable que je me suis aperçu de cela ... j'ai trouvé cela bizarre, pour PHP, qui fait peu attention au typage n'est pas la même capacité de stockage pour une chaine que pour un tableau ... et aussi savoir pourquoi c'était ainsi ?

    Ma deuxième interrogation en sous entendu est comment faire pour stocker plusieurs objets (milliers) d'une classe autrement que dans un tableau, dans une collection qui ne stockerait que des pointeurs mémoire vers cet objet ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    une base de donnée, a ce niveau la je pense que c'est largement mieux que de tout mettre en mémoire vive ^^

    Ensuite pour ta première question, le test que tu a fait ne veut rien dire :

    1/ on ne peut ajouter que 8126300 caractère a une chaine
    2/ on ne peut avoir au maximum 151665 ligne de 26 caractère dans un tableau...

    Essai pour comparer, de faire une chaine ou tu ajoute 1 carac par 1 carac, et un tableau ou tu ajoute un carac par un carac.En temps normal tu devrais obtenir le meme resultat vu que en mémoire (a confirmer) une chaine est représentée comme un tableau de carac.

    je vois pas trop ou est ta question...

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    J'ai bien évidemment une base de données =)

    Mais, mes requêtes me renvois des informations sous formes hiérarchisées et la mise en forme est assez compliqué, en fonction des paramètres d'affichages que l'utilisateur a sélectionné.

    Mon souhait, est de mettre tous mes retours de requêtes dans des objets et collections pour les manipuler plus facilement que les "recordset" de type mysql_fetch_array($obj)

    Mais bon, j'ai ma réponse =) je n'avais pas testé le nombre maximum de ligne d'un tableau :p

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/01/2007, 11h31
  2. [Tableaux] Classer des variables en décroissant
    Par Mikiman dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2006, 12h51
  3. Réponses: 3
    Dernier message: 29/06/2006, 17h50
  4. Réponses: 21
    Dernier message: 05/02/2006, 17h37
  5. taille des variables ou des objets?
    Par BobLBricoleur dans le forum Flash
    Réponses: 4
    Dernier message: 27/12/2005, 14h57

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