Bonjour à tous ! Non mais quel site incroyable !
Je suis parti d'un petit bout de code pour devenir un bon amateur en php grâce à des communautés comme celle-ci ! TY everyvody.
C'est la première fois que je demande de l'aide sur un forum, il fallait que je m'inscrive ici !


J'en viens au problème:

Ce script récupère des infos dans un '.txt',
ces infos sont inscrites dans un tableau comprennant pas moins de 120.000 lignes. Elles sont ensuites 'explod'ée et à partir de là, les infos récupérées permettent de redimensionner une image, de les fusionner sur un fond crée au préable. Un fond de 10.000 sur 10.000 svp !

120.000 fois des fonctions déjà lourdes à la base !
Je sais, je sais c'est ce qu'on peut appeller un BIG FAT SCRIPT.
Le scripts colle 120.000 éléments sur une carte. (J'ai vraiment pas envie de le faire à la main). Le script n'est destiné qu'à fonctionner une seule et unique fois via wamp. histoire d'avoir la map complète d'un mmorpg mais il ne fonctionne pas et je ne trouve pas de solution.

Mis à part p-e de diviser en 60 le '.txt' et de coller les élément 2000 par 2000 mais cette solution ne me convient pas.

Conqurêtement j'ai 3 questions:
-Quel limite ai-je atteint ?
-Y'a t-il une solution ?
-Aprés avoir utilisé les fonctions 'ini_set' et 'set_time_limit' dois-je les remettre en état ?

Pour info, j'ai reussi à dessiner la map en divisant par 4fois plus qu'au paravant la taille des éléments et la taille de l'image de base en 2500x2500 mais ces questions sans réponses tournent et tournent dans ma tête.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$datafile = file('town.txt'); // absortion des données
if(!is_array($datafile)) die("File could not be opened");
 
//image de fond
header ("Content-type: image/png");
ini_set("memory_limit", "12000M"); // augmentation memoire
set_time_limit(0);  // illimite dans le  temps exé du script
$imgfond = imagecreate(10000,10000);
$bleu = imagecolorallocate($imgfond, 20, 68, 116);
 
 
// insertion des éléments de la carte
foreach($datafile as $datum){
	list($id, $xpos, $ypos, $type, $free) = explode(',', $datum);
	$urlimg=$type.'.png'; // creation url img àpd données
	$xpos = 10*$xpos; // indice de position
	$ypos = 10*$ypos;
	$free= intval($free);
 
	// Modification de la taille des iles 
	$imgsource = imagecreatefrompng($urlimg);
	$largeur_imgsource = imagesx($imgsource);
	$hauteur_imgsource = imagesy($imgsource);
	$largeur_element_resize = $largeur_imgsource/12; //indice taille iles
	$hauteur_element_resize = $hauteur_imgsource/12;
	$element_resize = imagecreate($largeur_element_resize, $hauteur_element_resize);
	$red = imagecolorallocate($element_resize, 255, 0, 0);
	imagecolortransparent($element_resize, $red);	
	$largeur_source = imagesx($imgsource);
	$hauteur_source = imagesy($imgsource);
	$largeur_element_resize = imagesx($element_resize);
	$hauteur_element_resize = imagesy($element_resize);
	imagecopyresampled($element_resize, $imgsource, 0, 0, 0, 0, $largeur_element_resize, $hauteur_element_resize, $largeur_source, $hauteur_source);
 
 
	ImageAlphaBlending($imgfond, true);  // insertion
	$logoW = ImageSX($element_resize); 
	$logoH = ImageSY($element_resize); 
	ImageCopy($imgfond, $element_resize, $xpos, $ypos, 0, 0, $logoW, $logoH);
 
}
 
 
 
 
ImageJPEG($imgfond); // output to browser 
 
ImageDestroy($imgfond); 
ImageDestroy($element_resize);
ImageDestroy($imgsource);