JeuWeb - Crée ton jeu par navigateur
php image corrupt or truncated - 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 : php image corrupt or truncated (/showthread.php?tid=6725)

Pages : 1 2


RE: php image corrupt or truncated - starmindfr - 21-03-2013

en fait si je comprend bien c'est déjà en bonne partie ce que je fais pour le découpage des taches, j'ai une page map.php qui fait un appel a 2 fonctions dans images.php, une pour l'image de base avec les factions, et une avec l'image des factions sur laquelle j'ajoute des marqueurs.

Pour le test conditionnel, quelle est la condition ? je suppose que c'est sur le imagepng mais comme savoir si l'image est terminée ?

En attendant j'ai mis un sleep(1) sur les 2 generations d'images, et j'ai virer le md5, ca semble mieux marcher pour l'integrité d'image, mais il ne rafraichit donc plus l'image et m'affiche bien l'ancienne version :

Dans ma page map.php j'ai l'ancienne, je relance la page 3 fois rien ne change, je fait "ouvrir l'image" ca m'affiche l'ancienne en plein ecran ... F5 sur la page avec uniquement l'image sans aucun script et la nouvelle charge bien...

question toute bete mais si j’utilise uniquement le fichier sur le disque, j'ai toujours besoin de mettre un image destroy a la fin ? je me demande s'il ne purge pas l'image avant la fin.


RE: php image corrupt or truncated - Xenos - 21-03-2013

imagedestroy n'est pas requis, php fait le ménage en fin de script, mais le mettre le plus tôt permet de lâcher la mémoire le plus tôt (mémoire qui peut alors être prise pour la génération d'une autre image, par une autre page d'un autre joueur).
Pour le test, peut-être filectime, pour récupérer la date de dernière modification du fichier.
Quant au F5, il faut peut-être modifier les en-têtes retournées par le serveur pour cette image, principalement la date d'expiration du fichier.


RE: php image corrupt or truncated - starmindfr - 21-03-2013

j'ai essayer l'expiration mais la liste des factions peut etre mise a a n'importe quel moment (aussi bien 5 secondes que 1 jour) , donc il me semble que soit je force une relecture systématique, soit je passe par mon md5 ?

je tente cette boucle qui si je n'ai rien louper, verifie le contenu sinon attend +1 seconde :

Code :
unlink($tempimg);
for ($i = 0; $i < 5; $i++) {
    sleep(1);

    if (false !== ($image = @file_get_contents('images/tempimg/factions.png'))) {
        header('Content-type:image/png');
        imagepng($image,$tempimg,1);
        break;
    }

}

sinon si je ne donne pas direct en output une image au lieu du fichier c'est que j'utilise "smarty" pour la pagination et je colle l'image dans un td sur la page et non juste une image.