Mémoire utilisée ?

Eléphanteau du PHP | 38 Messages

03 juil. 2012, 19:37

Bonjour,

J'aurai une question au sujet de la mémoire utilisée sur un site.

J'ai un fichier commun à tout le site /includes/fonctions.php qui rajoute 1 200 000 octets (1.2mo quoi) de mémoire .

Code : Tout sélectionner

<?php echo memory_get_usage() . "\n"; => 118 000 require_once('includes/fonctions.php'); echo memory_get_usage() . "\n"; => 1 318 000 (soit 120 000 octets rajoutés par fonctions.php).
En bas de mes pages (echo memory_get_usage() avant ma balise </body>) après avoir echo le html et fait des traitement php je tourne autour des 1.7mo.
Est ce que c'est beaucoup comme taille de mémoire utilisée ? ça me parait énorme. Après faudrait voir avec un CMS ou autre pour se faire une idée ?

Merci.

Mammouth du PHP | 790 Messages

03 juil. 2012, 22:42

j'ai peur de te dire une bêtise mais il me semble qu'il ne faudrait pas dépasser 1.5 mo...
il y a une fonction pour tester le temps d'affichage:
        <?php

// calcul du temps d'affichage
        function getmicrotime() {
            list($usec, $sec) = explode(" ", microtime());
            return ((float) $usec + (float) $sec);
        }

// lancement du chrono pour le temps d'affichage
        $debut = getmicrotime();
// ici tu met ton code

// fin du chrono 
        $fin = getmicrotime();
        echo '<center>Page générée en ' . round($fin - $debut, 3) . ' secondes.<br /><br /></center>';
        ?>
déjà tu auras une base pour chercher et optimiser !!!
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Eléphanteau du PHP | 38 Messages

03 juil. 2012, 23:23

En terme de génération de page, j'ai déjà un code du même genre :)
Je tourne autour de 200ms donc niveau rapidité c'est pas un problème, c'est plus au niveau d'espace mémoire allouée.

J'ai beaucoup de variables de configurations et de fonctions (affichage date, format texte bbcode en html etc.) qui font ci ou ça. J'essaye de regrouper les choses que j'utilise un peu partout dans un même fichier histoire de pas avoir 50milles require différents sur mes pages, j'ai beau l'avoir épuré, ça fait au final plus d'1mo de fonctions allouent par ce fichier qui lui sur le disque fait 80ko.

J'aimerai bien savoir ce que ça donne genre un forum phpBB ou autre, ce genre d'usines à gaz. Ou des framework (cakePhp, Symphony etc.)

Eléphanteau du PHP | 38 Messages

04 juil. 2012, 10:53

mmm, j'ai trouvé ça comme info sur le net : "Un processus Apache avec PHP c’est généralement 5 à 10 Mo de mémoire vive."

J'ai vu des gens avec cakephp qui avait 12 voir 15mo en bas de leur page o_O

Soit j'ai de la marge, soit c'est des cas extrêmes.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 juil. 2012, 11:12

salut,

ce ne sont pas les "require" qui vont faire monter l'utilisation mémoire (si tu essai d'inclure deux fois le même fichier tu risque d'avoir des soucis de redéclaration, sauf s'il n'y a que du traitement séquentiel mais ça devrait être une fonction ou une classe ;) ).


Plus tu aura un niveau d'abstraction elevé plus ton code va prendre du poids en mémoire. Simplement parce que cela ce paie en terme de code utilisé, de classe en mémoire etc.

ce n'est pas forcément un problème d'avoir un 1Mo de RAM de bouffé par ton script, par contre savoir si c'est réellement utile peu être. Par exemple tu n'a pas besoin de charger en mémoire toute ta base de données si tu n'utilise qu'un seul tuple (ha le bon vieux select* ....).

Imagine un framework web (ZF, symphony etc etc) + un orm (abstraction de la base donnée comme Doctrine (environ 3 - 4 Mo de fichiers) ça prend plus de mémoire que ça sans aucun problème.


@+
Il en faut peu pour être heureux ......