JeuWeb - Crée ton jeu par navigateur
Fopen // Erreur 500 - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Fopen // Erreur 500 (/showthread.php?tid=122)

Pages : 1 2 3 4


Fopen // Erreur 500 - Wells - 23-01-2013

Bonjour à tous, un gros soucis se pose à moi depuis qq jours.

J'ai augmenter la taille de la cartographie de mon jeu et certains joueurs n'arrivent plus à générer le xml contenant les infos.

Je m'explique, j'ai un script qui va générer en xml la carto du joueur (liste des cases qu'il voit, planetes, vso....)

Jusqu'à présent tout ce passer bien. Mais certains joueurs voit le script en question leur retourner une erreur "500 - Internal Seveur Error"

Le log apache que mon hébergeur m'a gentiment donné dit:

[error] [client 217.167.7.2] Premature end of script headers: aaa.php

Le script plante sur le fopen() du fichier créé. En effet, je rajoute petit à petit les infos dedans.

A noter que le script fonctionne impec sur mon serveur de dev, mais pas en prod.

J'ai donc bien l'impression que le problème vient d'une limitation dans PHP ou Apache. A partir d'une certaine taille, le fpoen() n'arrive plus à ouvrir le fichier.

Est ce que ça parle à qq'un ce genre de soucis?


RE: Fopen // Erreur 500 - Plume - 23-01-2013

Ce que l'erreur indique est que ton script s'est arrêté, quelque soit la raison, avant d'avoir pu rendre quelque chose au serveur web. Dans ton cas, il semble bien que ce soit une limite de mémoire qui soit atteinte. Ton serveur de prod n'est pas un mutualisé, si ?


RE: Fopen // Erreur 500 - Wells - 23-01-2013

Si, c'est un mutualisé. Mais bon, on parle d'un fichier de qq Mo. La limite mémoire en RAM est à 100Mo.

De plus je l'ai augmenter au début du script à 200Mo.

Le max_file_size est à 5 Mo

Pour etre plus précis; le php info: http://gamev7.septentrion-game.com/php.php


RE: Fopen // Erreur 500 - niahoo - 23-01-2013

Fais voir le code ...


RE: Fopen // Erreur 500 - Wells - 23-01-2013

Alors en faisant cours:

Code :
    //##################### GENERATION DU XML ###########################
    $dossier='.';
    $xml='<?xml version="1.0" encoding="ISO-8859-1"?>';
    $xml.='
    <xml>';
        $xml.='
        <CentreX>'.$X_Centre.'</CentreX>
        <CentreY>'.$Y_Centre.'</CentreY>';
        $xml.='
        <TailleX>'.($MAXX_TOTAL-$MINX_TOTAL).'</TailleX>
        <TailleY>'.($MAXY_TOTAL-$MINY_TOTAL).'</TailleY>';
        $xml.='
        <MinX>'.$MINX_TOTAL.'</MinX>
        <MinY>'.$MINY_TOTAL.'</MinY>';
        $xml.='
        <MaxX>'.$MAXX_TOTAL.'</MaxX>
        <MaxY>'.$MAXY_TOTAL.'</MaxY>';
    
    unlink($dossier.'/cartoadel.xml');
    xmlfic($dossier.'/cartoadel.xml',$xml);unset($xml);

Vous notez que je vide le $xml au fur et à mesure.

Code :
function xmlfic($path,$xml)
    {//echo $path;
    $fp = fopen($path,'w');
    fputs($fp,$xml); fclose($fp);
    unset($xml);
    }


function xmlfic_intermediaire($path,$xml)
    {
    $fp = fopen($path,'a');
    fputs($fp,$xml); fclose($fp);
    unset($xml);
    }

Aprés :

Code :
foreac(ma tréssssssssssss longue boucle)
{
blabla je remplit $xml
xmlfic_intermediaire($dossier.'/cartoadel.xml',$xml);unset($xml);
}

Jusqu'à la fin

Code :
    $xml.='
    </xml>';
    xmlfic_intermediaire($dossier.'/cartoadel.xml',$xml);unset($xml);

Rien de bien sorcier ni de gourmand à priori. Je comprend vraiment pas.


RE: Fopen // Erreur 500 - niahoo - 23-01-2013

ça plante sur les fopen en ajout ou en write ?

Sinon tu peux utiliser la lib Dom de php et faire $doc->saveXML('monfichier.xml'); c'est plus chiant mais c'est plus propre.


RE: Fopen // Erreur 500 - Wells - 23-01-2013

(23-01-2013, 05:59 PM)niahoo a écrit : ça plante sur les fopen en ajout ou en write ?

Sinon tu peux utiliser la lib Dom de php et faire $doc->saveXML('monfichier.xml'); c'est plus chiant mais c'est plus propre.

J'ai testé mais ca change rien. je dépasse une limite du serveur, ca semble évident, mais laquelle ??????? mystère et boule de gomme


RE: Fopen // Erreur 500 - srm - 23-01-2013

C'est un fichier par joueur ou 1 pour tous les joueurs ?


RE: Fopen // Erreur 500 - niahoo - 23-01-2013

ça plante sur les fopen en ajout ou en write ?

T'ass essayé de tout mettre dans $xml et de faire un seul xmlfic() (bon, logiquement ça devraît être pire si c'est un problème de RAM, mais c'est pas obligé.


RE: Fopen // Erreur 500 - Wells - 23-01-2013

C'est un fichier par joueur.

Ca plante sur le fopen il me semble.