Accueil > Forum > > > > [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes
[Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes
mercredi 5 octobre 2005 à 17:54:21 |
[Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

arnal69130
|
Bonjour à tous, Je développe un site en php d'une dizaine de pages. Il tourne sous Apache2+php5 sur w2k. La plupart du temps tout fonctionne bien, mais de temps en temps, en ajoutant certaines instructions php (qui semblent vraiment anodines), Apache plante en affichant une fenêtre Application popup : Apache.exe - Erreur d'application : L'instruction à "0x00837ca8" emploie l'adresse mémoire "0x05f71000". La mémoire ne peut pas être "read". Cliquez sur OK pour terminer le programme.
Pas très explicite ! pas d'erreur php...
Alors je triture le code php pour ne pas utiliser telle ou telle syntaxe, et j'arrive à contourner comme ça le problème. Mais dès que j'implémente une nouvelle fonctionnalité, je retombe là-dessus.
Par exemple, tout fonctionnait bien, et j'ai ajouté ceci : « while($ligneResultat=odbc_fetch_array($res)) { echo 'test'; }» et maintenant ça plante ! pourtant le résultat est valide.
Dans le log d'erreur d'apache, il y a la ligne : FATAL: emalloc(): Unable to allocate 892350769 bytes
Si quelqu'un a une idée, merci de m'aider...
Arn;o)
|
|
mercredi 5 octobre 2005 à 18:13:43 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

J_G
|
FATAL: emalloc(): Unable to allocate 892350769 bytes !!!!!!!!!!!!!!!
!!! Oooouach, ça arrache !!!
Une simple formule mathématique va t'expliquer le problème :
892 350 769 bytes / (2^20) = 851,01201 Mo
Es-tu sûr d'avoir l'espace nécessaire en RAM ?
Question optimisation :
Il faut savoir que foreach() duplique les tableaux, alors que each() non !
_fetch_array() te sort la concaténation de _fetch_assoc() et _fetch_row()
|
|
mercredi 5 octobre 2005 à 21:14:40 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

Anthomicro
|
Salut,
une boucle infinie ailleurs peut-être ? un virus sur ta machine ?
|
|
jeudi 6 octobre 2005 à 00:37:12 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

FhX
|
mysql_fetch_array($query,MYSQL_ASSOC)
Et la, plus de problème :)
|
|
jeudi 6 octobre 2005 à 10:08:35 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

arnal69130
|
Merci à tous pour vos idées.
Je vais vérifier toutes mes boucles, et optimiser mon code selon les suggestions de J_G. C'est vrai que j'utilise très souvent foreach(), je ne savais pas qu'il fallait éviter...
Ce qui m'étonne, c'est que si j'avais fait une boucle infine, il devrait normalement y avoir une erreur php de max_execution_time, non ? Voici ma config à ce sujet (dans php.ini, c'est celle par défaut !)
;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 30 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
A croire qu'Apache n'en tient pas compte ?
En tout cas, c'est clair une telle demande de mémoire n'est pas acceptable par la machine, et encore, je suis en mode test et je suis le seul visiteur ! Ce qui est bizarre c'est que dans le gestionnaire de processus de Windows, le processus Apache ne prend jamais plus de 7 ou 8 Mo...
Sinon, j'utilise les sessions, alors j'avais pensé que je mémorisais trop de chose dans mes sessions, mais les fichiers créés dans le répertoire temporaires ne dépassent pas les 170 Ko ! J'ai aussi essayé en revenant à Apache 1, même problème.
Je ne pense pas avoir de virus, j'ai un AV à jour (SophosAV) et je teste toute la machine tous les jours...
FhX, j'utilise une connexion odbc et pas mysql, alors la fonction est odbc_fetch_array()... les arguments ne sont pas les mêmes que mysql_fetch_array(). Merci qd même. J_G, odbc_fetch_assoc() ça n'existe pas ;o) En fait, même si j'utilise odbc_fetch_object() ça plante...
|
|
jeudi 6 octobre 2005 à 10:11:09 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

arnal69130
|
Je viens d'essayer avec odbc_fetch_row directement, et ça ne plante plus ! super, pourvu que ça dure ;o) Merci encore à tous les 3. A+ Arn;o)
|
|
jeudi 6 octobre 2005 à 10:27:58 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

arnal69130
|
:-s En fait ça marche pas, je me suis emballé pour rien, désolé...
|
|
jeudi 6 octobre 2005 à 10:41:24 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

arnal69130
|
Le plus pénible pour trouver la source de l'erreur, c'est que - si j'enlève le bout de code en question, ça marche - si je le mets avec tout le reste du code, ça plante - mais si je ne mets que ce bout de code (plus la connexion à la base), ça ne plante pas !
Voici un peu plus de code, si jamais ça vous inspire : $_SESSION['connexion']=odbc_connect("blablabla","","") or die("Erreur de connexion".odbc_errormsg()); $req="SELECT blablabla FROM blablabla WHERE blablabla "; $res=odbc_exec($_SESSION['connexion'],$req); if (!empty($res)) { $nbChamps=odbc_num_fields($res); echo '<br />---<br />'; while(odbc_fetch_row($res)) { for ($i=1; $i<=$nbChamps; $i++) echo odbc_field_name($res,$i).'='.odbc_result($res,$i).'<br />'; } odbc_free_result($res); } exit;
et toujours les mêmes logs pour Apache (mais la mémoire requise a augmenté !) : [Thu Oct 06 10:38:12 2005] [notice] Parent: child process exited with status 3221225477 -- Restarting. [Thu Oct 06 10:38:13 2005] [notice] Apache/2.0.54 (Win32) PHP/5.0.5 configured -- resuming normal operations [Thu Oct 06 10:38:13 2005] [notice] Server built: Apr 16 2005 14:25:31 [Thu Oct 06 10:38:13 2005] [notice] Parent: Created child process 872 [Thu Oct 06 10:38:14 2005] [notice] Child 872: Child process is running [Thu Oct 06 10:38:14 2005] [notice] Child 872: Acquired the start mutex. [Thu Oct 06 10:38:14 2005] [notice] Child 872: Starting 250 worker threads. FATAL: emalloc(): Unable to allocate 1920220171 bytes [Thu Oct 06 10:38:18 2005] [notice] Parent: child process exited with status 3221225477 -- Restarting. ...
Je me penche sur les foreach...
Arn;o)
|
|
jeudi 6 octobre 2005 à 14:08:23 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

malalam
|
De toutes évidences, il y a un truc qui bouffe BCP de ram, là... 1920220171 bytes, ça fait très très beaucoup...
Et si ça ne venait pas de ton script, mais de ton système ? Il y a
peut-être une tâche un peu bizarre qui tourne, et qui peut-être
interfère avec apache.
|
|
jeudi 6 octobre 2005 à 15:32:20 |
Re : [Apache] FATAL: emalloc(): Unable to allocate 792474677 bytes

J_G
|
Réponse acceptée !
Salut,
Dis moi ... T'es dans un plan galère là !?!
Voyon voâr !
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB) +
le processus Apache ne prend jamais plus de 7 ou 8 Mo
=
Le php.ini sert bien à quelque chose. C'est pas apache qui demande 2 Go de RAM
ET
Ca pourrait être la raison de l'erreur, "Apache :Allouer 2 Go !!! T'es pas dingue... Moi j'me casse!"
Donc il n'y a pas d'erreur dans ton script... (ce qui n'arrange pas l'affaire)
J'aurai une piste de réflexion : l'erreur provient de ta requète... Donc du code SQL, c'est là que serait la "boucle infinie".
Je m'explique :
Ta base de données, et en particulier son analyseur de SQL, est un
process indépendant d'Apache. Donc qui ce fout roal de php.ini.
Si tu fais une requète de taré genre
SELECT *
FROM tablePouet as t1, tablePouet as t2
WHERE t1.id != t2.id
La tu auras tout les croisements possible des champs de la table. Soit
une table de taillle !N si tablePouet contient N champs. Truc ouf koi
!!!
Tu me vois venir ?
Bon... ODBC il s'en fout lui... Il n'a pas de limite d'allocation
configurée (si ce n'est la limite autorisée par windows). Donc il en
pose un peu partout... Bref il s'arrange et on s'en fout de comment.
Mais il renvoit un lien vers le resultat. "Voici votre numéro de compte
client à rapeller lors de toutee communication ;)"
Mais quand tu demande à Apache de récupérer les données pour les
parser, ligne par ligne. Il demande à ODBC "fille moi le paquet et je
m'arrange avec". ODBC répond : "pas de problème ça fait 2Go". La suite
tu la connais.
Voilà pourquoi ça plante quand tu fait odbc_fetch_array()
Donc révise ta SQL....
|
|
Cette discussion est classée dans : php, apache, fatal, unable, emalloc
Répondre à ce message
Sujets en rapport avec ce message
configuration Apache MySQL pour prog PHP [ par NoviceSix ]
8-) Bonjour TLM,Je souhaite débuter en PHP, j'ai donc téléchargé EasyPHP pour l'installer sous WINDOWS 2000ME. Les outils MySQL et Apache sont install
Plizz de l'aide!!! =) [ par Xime ]
au secours!!!! :)voila je viens d'installer un serveur apache sur ma machine juskici ca tourne correct j'arrive a voir la page d'apache.mais apres j'i
ARG ! > MySQL: Unable to save result set in ... [ par antares7364 ]
Bonjour,Un problème est survenu dans une de mes tables MySQL :lorsque j'essaie d'en afficher le contenu avec PHPMyAdmin ou par unautre script PHP, MyS
Prob Installation PHP [ par neocide ]
[_]NEOCIDE[_]Salut!Je suis sous WinMe et j'ai installé Apache et PHP mais je n'ai pas trouver la dll qui permet de mettre PHP en module sous Apache.Où
PHP et Apache [ par vincenteraptor ]
Bonjour,Je début dans le monde PHP et j entends partout dire que PHP fonctionne avec Apache! Alors voici ma question : PHP se limite t il aux serveurs
pb php/apache [ par glipper ]
Bonjour, Je viens de monter un serveur apache (V1.3) et d'installer php4.3.2 (depuis php.net) sur mon pc qui tourne sous Win2000Pro. Mon serveur marc
pb installation serveur [ par eax ]
salutg qq soucis avec l'installation de php 4.3.3 sous apache 2.0.47 sous windows xp (sp1)apache n'arrive pas à charger php4apache2.dll, il me dit que
pbs apache v2 + php [ par mojira ]
bonjours a tous ,j'ai un petit probleme sous linux ( red hat 8.0 )en effet apache comprend pas le php :aucune erreur s'affiche , mais c'est une parti
Aide finalisation Apache-PHP-MySQL [ par DreamPush ]
Bonsoir,J'ai le serveur Apache v2.0.49, PHP v5.0.0RC1 et MySQL v5.0.0a-alpha pour Windows.Apache et PHP marchent très bien ensemble sur mon ordi XP. D
Help ! Apache-Php-Windows+AOL [ par toni ]
Je viens d'installer un serveur Apache avec Windows 2000 etAOL comme connection distante.Mes premiers tests en localhost, avec des pages en Phpfonctio
Livres en rapport
|
Derniers Blogs
CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante [ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Forum
RE : PAGE DE LOGINRE : PAGE DE LOGIN par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|