JeuWeb - Crée ton jeu par navigateur

Version complète : Fopen // Erreur 500
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4
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?
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 ?
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
Fais voir le code ...
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.
ç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.
(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
C'est un fichier par joueur ou 1 pour tous les joueurs ?
ç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é.
C'est un fichier par joueur.

Ca plante sur le fopen il me semble.
Pages : 1 2 3 4