[RESOLU] Limite de la de mémoire.

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 : [RESOLU] Limite de la de mémoire.

Re: [RESOLU] Limite de la de mémoire.

par niconicochan » 06 oct. 2014, 23:11

Ca y est, j'ai compris.

128M = 128 * 1024 * 1024 octets = 128 * 2^20 octets = 134 217 728 octets et
256M = 256 * 1024 * 1024 octets = 256 * 2^20 octets = 268 435 456 octets.

Sachant que 1024 = 2^10.
1024 * 1024 = 2^20.
1024 * 1024 * 1024 = 2^30.
...

La seule chose à savoir c'est:

Quand tu montes d'1 unité (exemples: de o à Ko ou de Ko à Mo) tu divises par 2^10 et à l'inverse tu multiplies.
Quand tu montes de 2 unités (de o à Mo ou de Ko à Go) tu divises par 2^20 et à l'inverse tu multiplies.
Quand tu montes de 3 unités (de o à Go) tu divises par 2^30 et à l'inverse tu multiplies.

Merci :wink:

Re: [RESOLU] Limite de la de mémoire.

par niconicochan » 03 oct. 2014, 22:40

Merci pour l'info. :D
Mais quelque chose ne colle pas!
Une question très courte: pour ce qui est de 128M et 256M il s'agit bien
de mégaoctets, soit respectivement de 128 000 000 octets et de 256 000 000 octets?

Re: Limite de la de mémoire.

par moogli » 03 oct. 2014, 20:20

ben pourtant si
c'est de octect, tu divise par 1024 tu as de ko tu divise par 1024 des Mo) tu aura 128 et 256.
Après c'est des unités usuel comme pour le mètre par exemple sauf que la c'est une division par 1024 et pas 1000 :)
1ko = 1024 o
1Mo = 1024 ko


1km = 1000 m
1Mm = 1000km => oui c'est pas vraiment usuel mais c'est pareil avec le mm :)


@+

Re: [RESOLU] Limite de la de mémoire.

par niconicochan » 03 oct. 2014, 17:58

Merci pour les précisions.

Si je résume...


Donc 134 217 728 bytes = 134 217 728 octets et
268 435 456 bytes = 268 435 456 octets.

Tu me dis 134 217 728 octets / (1024*1024) = 128M et
268 435 456 octets / (1024*1024) = 256M.
En vérifiant cela ci-dessous.

Sachant que 1024 * 1024 = 2^20.
128M = 2^7M = 2^7 * 10*6 octets.
256M = 2^8M = 2^8 * 10*6 octets.

134 217 728 octets / 2^20 = 2^7 * 10^6 octets et
268 435 456 octets / 2^20 = 2^8 * 10*6 octets.
134 217 728 octets = 2^7 * 10^6 * 2^20 octets = 2^27 * 10^6 octets et
268 435 456 octets = 2^8 * 10^6 * 2^20 octets = 2^28 * 10^6 octets.

134 217 728 octets = 2^27 octets et non 2^27 * 10^6 octets.
et
268 435 456 octets = 2^28 octets et non 2^28 * 10^6 octets.

Donc il y a une erreur.
En fait, les deux fois 1024 dont tu parles sont des mégaoctets et non
des octets.
Tu n'avais pas précisé, je ne savais donc pas l'unité utilisée...
Mais je me demande toujours comment tu as fait
pour penser à diviser respectivement 134 217 728 bytes (donc des octets)
et 268 435 456 octets (donc toujours des octets) par 2^20 * 10^6 octets
pour trouver dans le premier cas 128M et dans le deuxième 256M.

Re: [RESOLU] Limite de la de mémoire.

par moogli » 03 oct. 2014, 11:14

pour aller plus loin c'est en fait une série mathématique.
c'est la somme de zéro à n de 2^n
la chose s'applique à d'autre base de numération (le binaire étant une base 2, le système décimale que l'on utilise tous les jours en base 10).
en informatique il existe une base que tu utilise régulièrement : la base 16 ou hexadécimal (que tu utilise par exemple pour les codes couleurs css / html).
la base 8 est aussi utilisée (octal).
le cal étant similaire.

Régulièrement en informatique tu vois des division par 1000 c'est de la foutaise purement commercial.
(regarde la différence entre l'étiquette de ton disque dur / clef usb et la valeur réelle indiquée par ton ordi ;) ).

dernière chose, nous on parle d'octect mais les anglo saxo de byte à ne pas confondre avec un bit (non y a pas de e ^^) qui est la même chose par tout et représente l'unité (un octect = 8 bit).

si tu veux encore plus d'info il te faut cours sur d’électronique ;)


@+

Re: [RESOLU] Limite de la de mémoire.

par niconicochan » 02 oct. 2014, 15:46

Merci pour l'explication :D

Re: [RESOLU] Limite de la de mémoire.

par xTG » 02 oct. 2014, 15:32

Cela a un lien avec le hardware en fait (ou la logique binaire).
Dans une mémoire pour rajouter de la place il faut rajouter des bits.
Or quand on rajoute un bit cela revient à multiplier le nombre de combinaison par deux (2^bit), et donc la taille.

Re: Limite de la de mémoire.

par niconicochan » 02 oct. 2014, 15:21

Merci pour toutes ces précisions.

A ma question de savoir comment allouer plus de mémoire à mon script,
vous m'avez fait savoir que ce n'est pas ça qu'il faut que je fasse,
qu'il faut au contraire que je fasse diminuer le poids de mon fichier.

Il s'agit donc d'un autre problème que je posterai peut-être si besoin,
mais vous avez bien répondu à ma question quant à savoir comment allouer plus de mémoire à mon script
(=>la question ne se pose pas car ce n'est pas ce qu'il faut faire).
Je mets donc le problème résolu.

Je vais d'abord continuer de travailler avec Toytoy car il s'occupe de mon dossier pour l'instant.

Juste une remarque: le chiffre de 1024 vérifie parfaitement tes calculs.
C'est très intéressant.
Ca l'est d'autant plus que la moitié de 1024 est 512, et la moitié de 512 est 256.
Ces trois chiffres me sont familiers.
Déjà 1 octet = 2^8 valeurs = 256 valeurs.
Quand à 512 j'ai déjà souvent vu ça quelque part quand on parle de mémoire.
J'ai l'impression que tout ça c'est très lié. :D
Si tu peux m'expliquer ces liens en trois lignes ça m'intéresse beaucoup.
Mais quoi qu'il en soit je mets dès maintenant ce message comme résolu.

Re: Limite de la de mémoire.

par moogli » 01 oct. 2014, 19:41

salut,

le message d'erreur indique la taille max.
si tu prend les deux valeurs que tu divise deux fois par 1024 (c'est de octect, tu divise par 1024 tu as de ko tu divise par 1024 des Mo) tu aura 128 et 256.

ensuite la quantité annoncée derrière c'est la valeur où il stop pas la valeur max.

maintenant comme l'indique xTG tous ce que l'on peux te dire c'est que php fait bien son boulot en stop à la limite de mémoire paramétrée.

tu te rend compte, je pense, qu'utiliser plus de 128Mo c'est énorme. celà peux arriver dans le cas de traitement d'image (avec gd) ou si tu veux récupérer tous le contenu d'un gros fichier par exemple.


je t'invite à utiliser un xdebug ave le mode de profilage tu devrais pouvoir suivre les utilisations mémoires et plus des goulets de terme de temps.
si tu utilise le debuguer tu pourra aussi jouer ton script pas a pas et voir le code qui vautre le script.

quoi qu'il en soit on ne pas t'aider plus dasn la devinette sans code ;)

@+

Re: Limite de la de mémoire.

par niconicochan » 01 oct. 2014, 18:45

Il s'agit d'un script pour un programme Ajax (réponse serveur) pour renouveler un calendrier mensuel,
mais Toytoy s'occupe déjà depuis un moment de m'aider à la mise en place du programme.

Comme il passe de son temps à m'aider depuis un moment, je ne voudrais pas demander à quelqu'un d'autre
de m'aider aussi sur les mêmes points, par respect pour ceux qui prennent de leur temps pour m'aider.

J'ai posté ce nouveau message sur le forum car après avoir cherché en vain toute la journée comment régler le problème
très précis dont je vous fais part, j'ai pensé que si quelqu'un peut me donner une réponse précise et rapide à ma question
je pourrais peut-être terminer seul le programme Ajax et éviter à Toytoy d'avoir plus de choses à voir,
car je sais qu'il a pas mal de boulot en ce moment. Et le but c'est aussi d'éviter à ceux qui nous aident de faire
ce qu'on peut faire nous.
Mais si c'est en fait plus compliqué que ça de résoudre le problème c'est plus pareil car ça vous implique davantage,
et je ne vais pas vous impliquer dans le détail de mon code car Toytoy lui s'en occupe déjà.

Je voudrais savoir à quoi tu fais référence exactement quand tu dis "quand on voit ce que tu mets..."
Est-ce que tu fais référence au résultat retourné par le navigateur:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 129 bytes)
?

Re: Limite de la de mémoire.

par xTG » 01 oct. 2014, 17:56

Et tu fais tourner quoi comme script ?
Parce que là j'ai envie de dire le php.ini fait son boulot quand on voit ce que tu mets...
Donc le souci c'est le script qui tourne et qui est un gouffre sans fond à mémoire. ;)

Limite de la de mémoire.

par niconicochan » 01 oct. 2014, 16:23

Bonjour,

Dans l'écriture d'une page en php je suis tombé sur
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 129 bytes) in
+ ma page

echo ini_get('memory_limit'); fait apparaître 128M
Je suppose que ça signifie que ma page ne doit pas dépasser un poids de 128 mégaoctets de mémoire vive.
Si j'ajoute maintenant dans mon code ini_set('memory_limit', '256M'); j'obtiens sur le navigateur:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 65488 bytes)
Quoi que je mette comme poids en paramètre dans ini_set('memory_limit', '...');
je vais toujours avoir un message d'erreur avec Allowed memory size légèrement supérieur au poids que j'aurais mis.
Si je mets un poids beaucoup plus important je me retrouve alors avec un message d'erreur Out of memory.
Ca ne fonctionne pas :(

Dans mon fichier php.ini-developement j'ai aussi essayé de changer
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M

par par exemple
; Maximum amount of memory a script may consume (256MB)
; http://php.net/memory-limit
memory_limit = 256M

et pareil dans php.ini-production où j'ai essayé de changer:
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M

par par exemple
; Maximum amount of memory a script may consume (256MB)
; http://php.net/memory-limit
memory_limit = 256M

Mais rien à faire :(
Ca ne marche toujours pas.
Même après avoir éteind puis rallumé les boutons du panneau de configuration.

Pour info, je travaille en local avec le package xampp.
J'ouvre mes fichiers php.ini avec le Bloc-notes.

Quelqu'un pourrait m'aider?