Limite de mémoire supérieure pour PHP / Apache
J'obtiens le message d'erreur quand je lance mon script PHP....
Fatal error: Out of memory (allocated 1827405824) (tried to allocate 88800 bytes)
J'ai ajouté cette ligne dans mon script PHP..
ini_set("memory_limit","3000M");
Cette déclaration ne semble pas contrôler correctement l'utilisation de la mémoire, mais je ne semble pas être en mesure de l'obtenir au-dessus d'environ 1,8 GO.
C'est comme si le haut de la limite de mémoire est limitée à un autre endroit.
J'ai également ajouté à la php.ini...
memory_limit = 3000M
Personne ne sait si la mémoire est limitée ailleurs?
Je suis sur un serveur local avec Xampp.
J'ai Windows 7, 64 bits avec 4 go de RAM.
Mon script utilise PHP GD image de la bibliothèque et je reçois le message d'erreur lorsque vous essayez d'affecter une image de référence avec ImageCreateTrueColor().
(Je sais que c'est une énorme quantité de mémoire - mais c'est juste un script, et son juste beaucoup plus facile de le faire de cette façon.)
Grâce.
Mise à jour....
@insaisissable @Orbling
J'attends que tout le monde s'ennuie avec cette question, mais voici le code simplifié qui illustre bien le problème.
<?php
ini_set("memory_limit","4000000000");
echo "ini_get = " . ini_get('memory_limit') . "<br>\n";
echo "memory_get_usage = " . memory_get_usage(true) . "<br>\n";
$bigImageHandle = imagecreatetruecolor(22200, 24800); //this is line 5
?>
Navigateur de sortie...
ini_get = 4000000000
memory_get_usage = 524288
Fatal error: Out of memory (allocated 1843396608) (tried to allocate 88800 bytes) in
E:\User\My_Webs\experiments\houseshunting\temp\osMaps\t1.php on line 5
J'ai testé avec un petit jeu de tuiles et la mémoire utilisée par imagecreatetruecolor() et j'estime que j'ai besoin de 2.7 GO
source d'informationauteur spiderplant0 | 2010-12-09
Vous devez vous connecter pour publier un commentaire.
Vous êtes en cours d'exécution sur un système d'exploitation 64 bits, mais Apache et PHP sont probablement encore en 32 bits. Si vous êtes à l'aide de mod_php, apache serait le facteur limitant ici.
Processus 32 bits sont limitées sur 2GiB de RAM, sauf si vous avez utilisé le commutateur /3GB et le logiciel est conscient de 3 GO support.
Qui laisse encore environ 200 MiB qui semble inutilisée, mais son assez petit qu'il peut être utilisé par les différentes bibliothèques qui ont tout pour être chargé dans la mémoire
Autant que je sache, l'utilisation de la bibliothèque ne s'affichent pas dans le mémoire, mais encore de compte vers le 2GiB limite (un peu comme la mémoire de l'appareil de compte vers le 4GiB limite sur windows 32 bits. D'où l'installation de 2 Go carte graphique vous apporte à moins de 2GiB utilisable de RAM).
Plus probable solution? Installer une version 64 bits de PHP, et puis c'est l'expédition (à l'aide d'un appel system (), peut-être)