Memoire serveur PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Memoire serveur PHP

par Sékiltoyai » 13 janv. 2009, 17:58

Elle te renvoie l'utilisation mémoire de l'exécution courante du script, c'est à dire sur la requête en cours, et ne fait absolument aucun total.

C'est sur les pages où tu as une grosse valeur qu'il faut agir, ce n'est pas plus compliqué que ça…

par Henry » 13 janv. 2009, 14:38

Bon je viens de comprendre exactement la signification de la fonction memory_get_usage().

Elle indique la quantité en octets de la charge de php. Toutefois deux questions se posent :
  • *Sur une page vierge du site sa valeur correspond à la charge mémoire de tout le site à l'instant T ou seulement de la page en question ?

    *De plus le fait qu'une page du site peut être ouvert 100 ou 200 fois à la seconde (avec un contenu dynamique, donc pas de nature identique) les valeurs de memory_get_usage() s'aditionnent-elles ?
Dans la deuxième hypothèse il est possible alors de connaitre la charge mémoire totale du site. Il suffit pour chaque page d'insérer une variable reprenant la valeur de memory_get_usage() puis d'auditionner sur une page administration par exemple toutes les valeurs de toutes les pages. De plus en reprenant la balise Title on peut même voir toute de suite ou peut être le problème.

Par contre pour le code, si quelqu'un à une idée !!

a plus

par Henry » 13 janv. 2009, 14:11

Bon je viens de voir que le résultat renvoyé est en octets donc il fait diviser par 1000 000 pour l'avoir en MO !!!!

par Henry » 13 janv. 2009, 13:59

Rebonjour à tous,

Non aucune image n'est retraitée. Le Php serre uniquement à récupérer des données dans une base et dans la partie administration d'inscrire des données.

Rien ne peut expliquer une telle valeur de memory_get_usage(). Est ce que quelqu'un sait exactement à quoi sert cette lfonction car suivant la page ou je l'execute je n'ai jamais les mêmes valeurs.

Par exemple sur une simple page vierge j'ai 36016 et sur la page Index admin j'ai 83208 ???

par SpintroniK » 12 janv. 2009, 23:55

Est-ce que ton script manipule des images avec php (librairie gd...) ?

par AB » 12 janv. 2009, 23:36

Comment je peux savoir se qu'il y a en mémoire : les variables et leurs tailles?
Tu peux voir ce qui cloche (prend trop de mémoire) en désactivant certaines parties de ton script. C'est un peu fastidieux mais je ne vois d'autres solutions et cela devrait se voir assez rapidement (faire les tests en local)

A part ça tu peux essayer de faire un phpinfo() pour voir la configuration memory_limit (dans php core) et connaître la mémoire qui t'es allouée. Par exemple chez online j'ai 96M

par Invité » 12 janv. 2009, 22:32

Bon,

le problème c'est que le code est énorme, le site comporte une multitude de pages avec des appels divers dans la base. Il est en ligne actuellement et toutes les pages, enfin une partie sont chargées par les internautes. Donc savoir ou est le problème ? :(

Je ne sais pas par ou commencer.

J'avais espérer trouver une info sur le serveur avec les fichiers Logs mais rien aucune erreur d'ouverture de page. Erreur 500 n'apparait nul part.

La fonction
<?php
$Memoire=memory_get_usage();
$Memoire_Mo=$Memoire/1024;
echo 'Taux approximatif d\'occupation mémoire: ' . $Memoire_Mo . ' Mo sur 40 Mo.<br />'
?>
est placé sur une feuille vierge sans aucun script. Sur une autre page les valeurs retournées sont complètement différentes. Bref je suis perdu

par Sékiltoyai » 12 janv. 2009, 22:15

la fonction que je site me donne quoi comme valeur : la mémoire disponible ou la mémoire utilisée ?
Utilisée évidemment.
Car mise dans une autre page du site, elle m'indique 81 Mo !!!!

Un script PHP c'est une requête par exemple sur la base SQL car le site possède dans ce cas plusieurs dizaines de scripts mais à chaque fermeture de page toute les variable sont automatiquement effacées avec le commande : mysql_free_result($Variable).
A la limite ca on s'en fout limite un peu, les variables sont libérées automatiquement à la fin du script. Mais je me demande ce que tu fais pour consommer autant de mémoire. Tu peux poster ton code ?
Comment je peux savoir se qu'il y a en mémoire : les variables et leurs tailles?
Tu peux pas…
Le javascript peut-il être en cause ?
Hein, le javascript, qu'est ce que ca vient faire là ?
Est vraiment un problème de mémoire ?
Euh oui, enfin surtout de mauvaise gestion mémoire…

par henry » 12 janv. 2009, 21:38

Re,

la fonction que je site me donne quoi comme valeur : la mémoire disponible ou la mémoire utilisée ?

Car mise dans une autre page du site, elle m'indique 81 Mo !!!!

Un script PHP c'est une requête par exemple sur la base SQL car le site possède dans ce cas plusieurs dizaines de scripts mais à chaque fermeture de page toute les variable sont automatiquement effacées avec le commande : mysql_free_result($Variable).

Comment je peux savoir se qu'il y a en mémoire : les variables et leurs tailles?

Le javascript peut-il être en cause ?

Est vraiment un problème de mémoire ?

Merci de votre aide

par Sékiltoyai » 12 janv. 2009, 20:15

Alors, déjà tu ne t'attaques pas correctement au problème, à savoir que 40Mo de mémoire utilisée sur un script PHP, ce n'est pas beaucoup, ni même énorme, c'est complètement faramineux.
Tu dois absolument réduire ce chiffre au maximum. Cela dépend ce que tu veux faire, mais ton script ne devrait (à fortiori en hébergement mutualisé) pas dépasser des pics de 10Mo…

Memoire serveur PHP

par Henry » 12 janv. 2009, 19:33

Bonjour à tous,

Je suis sur un serveur mutualiser et depuis 2 semaines, le site affiche des erreurs 500. Mon hébergeur pas trés professionnel, ne veut pas m'aider à résoudre le problème et m'indique que c'est surement un problème de mémoire en PHP (40 Mo autorisé) sans en être certain.

Comment peut on le vérifier.

La fonction :
<?php
$Memoire=memory_get_usage();
$Memoire_Mo=$Memoire/1024;
echo 'Taux approximatif d\'occupation mémoire: ' . $Memoire_Mo . ' Mo sur 40 Mo.<br />'
?>
me retourne 35, 8 Mo.

Merci d'avance à tous