ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 2008
-
17 mai 2006 à 14:57
kaizer63
Messages postés25Date d'inscriptionmercredi 18 février 2004StatutMembreDernière intervention22 décembre 2009
-
19 déc. 2008 à 23:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
kaizer63
Messages postés25Date d'inscriptionmercredi 18 février 2004StatutMembreDernière intervention22 décembre 2009 19 déc. 2008 à 23:22
Bonsoir a toutes et tous, je vient de tester ton code et voici l'erreur qui en ressort :
Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 0 is invalid for MySQL result index 4 (or the query data is unbuffered) in E:\Serveur\pub.php on line 34
Voici le contenu de la ligne 34 :
if( !mysql_data_seek($result,$rand) )
Je ne comprend pas lourd car moi et le codage php sa fait deux, je ne sait coder que Index.php?Page=xxx lol
Qui pourais m'indiquer le probleme ? Cordialement et merci par avance.
LaurentKOogar
Messages postés369Date d'inscriptionsamedi 4 septembre 2004StatutMembreDernière intervention20 octobre 2013 22 mai 2006 à 02:51
bien le script :-) le titre un peu ronflant, une regie pub c'est quand meme bien plus conplexe que 3 stats sur des images.
superbaloo78
Messages postés87Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 20:22
Effectivement,
c'est mieux comme ca ca m'evite encore des tests et de la rapidite
Merci pour ce conseil
stepibou
Messages postés112Date d'inscriptionjeudi 11 mars 2004StatutMembreDernière intervention11 octobre 2006 19 mai 2006 à 15:19
Bon, moi je note pas, de toute facon les notes ne veulent rien dire...
Mais si j'avais noté, j'aurrai mis que 5.
Je t'explique pourquoi : tu parle d'optimiser les resources..
Bon, pour le gd sit'en a pas besoin, en effet c'est peut etre bon.
Mais pour le reste ( a verifier que c 'est plus rapide )
En tout cas tu pert grave en lisibilité et simplicité de ton code. Pour un petit projet ca va, mais ensuite pour un gros... C'est pas dit qu'au contraire ca te demande pas plus de ressource..
Pour un bon code est d'abord un code court et clair...
ce qui n'est pour l'instant pas le cas.
Faidrai que tu le parametre au debut de ton code et non, en plein milieu comme un cheveux sur la soupe..
Ne te sent pas offusqué, c'est pour te faire avancer que je dis ca.
Bon code !.
a+
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 19 mai 2006 à 13:07
ok
je savais pas ;-)
@+
superbaloo78
Messages postés87Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention19 mai 2006 18 mai 2006 à 18:47
nan ca je ne veut pas car ca serait la seule fonction demandant la librairie gd ... je ne souhaite pas l'utiliser ... certains hebergeurs la bloque car elle demande souvent trop de puissance ... :)
donc non je n'utiliserais pas cette fonction
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 18 mai 2006 à 13:32
Salut,
Au lieu de faire
if(strtolower($extensionImage[1]) === 'jpg')
{
header('Content-type: image/jpeg');
}elseif(strtolower($extensionImage[1]) === 'png')
{
header('Content-type: image/png');
}elseif(strtolower($extensionImage[1]) === 'gif')
{
header('Content-type: image/gif');
}
fais :
$info_img = getimagesize($info_img); // On obtiens des infos sur l'image
header('Content-type: '.$size['mime']);// On envoie le type de l'image
unset($info_img);
@+
superbaloo78
Messages postés87Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention19 mai 2006 17 mai 2006 à 22:10
Salut
oui je connaissait pas getimagesize ;) mais bon je vais repasser en fopen plus rapide je pense comme me l'a conseiller ImmortalPC cela evite d'utiliser la GD.
Sinon mysql_fetch_array bouffe plus de ram que mysql_fetch_row comme je le fait ici, en effet cela retourne un tableau associatif, donc plus de ram (ca se joue pas a beaucoup mais bon ... un peu + un peu+ un peu = beaucoup :P). Sinon mes mysql_fetch_row a repetition ici me permettaient d'atteindre la ligne que je voulais dans la sql (la ligne $selectedId). Cependant je viens de voir mysql_data_seek qui permet d'atteindre cette ligne directement ;) je modifie mon code avec ces dernieres decouvertes et je poste ;)
stepibou
Messages postés112Date d'inscriptionjeudi 11 mars 2004StatutMembreDernière intervention11 octobre 2006 17 mai 2006 à 21:06
hello
avec getimagesize tu recupere le format de l'image...
ensuite, il faut liberer la mémoire de l'image.
tres drole de manière de programer :
pourquoi n'utilise tu pas mysql_fetch_array ?
au lieu de tes boucles, ta base doit etre mal géré...
fin bon, pour moi c'est tres tres loin d'etre parfait.
a+
superbaloo78
Messages postés87Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention19 mai 2006 17 mai 2006 à 18:42
>- $extensionImage = explode('.',$image);
>ça marche bien si le nom de ton image n' a pas de .
>0.gif ça marche.
>google.fr.gif ça marche plus.
>
>Donc perso je fais :
>$extensionImage = explode('.',$image);
>$extensionImage = $extensionImage[count($extensionImage)-1];
en effet ... ,mais c'est des id et il n'y aura pas de points dedans ;) donc pas besoin de le traiter :P
pour le switch ... oui je vais le faire :P le seul truc c'est que j'avais la fleme de faire des if elseif .. je le ferais ;)
sinon ouais j'ai pas penser au fopen qui je pense est plus rapide... le imagecreatefromjpeg est lent car il fait un fopen + traitement d'image ;)
merci de tes conseils ... je modifie ca sous peu
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 17 mai 2006 à 14:57
Salut,
nikel ;-)
A 2 petits trucs :-)
- $extensionImage = explode('.',$image);
ça marche bien si le nom de ton image n' a pas de .
0.gif ça marche.
google.fr.gif ça marche plus.
Donc perso je fais :
$extensionImage = explode('.',$image);
$extensionImage = $extensionImage[count($extensionImage)-1];
- Faire un switch pour 3 choix ça te ralentis pour rien.
vaux mieux faire un if et des elseif.
Sinan je remplacerais :
$extensionImage = explode('.',$image);
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires:'.gmdate("D, d M Y H:i:s", time() - 3600*24*365));
switch(strtolower($extensionImage[1]))
{
case 'jpg':
$gdImage = imagecreatefromjpeg($imagePath);
header('Content-type: image/jpeg');
imagejpeg($gdImage);
break;
case 'png':
$gdImage = imagecreatefrompng($imagePath);
header('Content-type: image/png');
imagepng($gdImage);
break;
case 'gif':
$gdImage = imagecreatefromgif($imagePath);
header('Content-type: image/gif');
imagegif($gdImage);
break;
}
Par
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires:'.gmdate("D, d M Y H:i:s", time() - 3600*24*365));
$info_img = getimagesize($info_img); // On obtiens des infos sur l'image
header('Content-type: '.$size['mime']);// On envoie le type de l'image
$fp = fopen($image, 'r');// On ouvre l'image
echo (fread($fp, filesize($image)));// On lit l'image
fclose($fp);// On ferme l'image
C' est koi le plus rapide ??
fopen ou les fonctions de création des images ???
19 déc. 2008 à 23:22
Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 0 is invalid for MySQL result index 4 (or the query data is unbuffered) in E:\Serveur\pub.php on line 34
Voici le contenu de la ligne 34 :
if( !mysql_data_seek($result,$rand) )
Je ne comprend pas lourd car moi et le codage php sa fait deux, je ne sait coder que Index.php?Page=xxx lol
Qui pourais m'indiquer le probleme ? Cordialement et merci par avance.
22 mai 2006 à 02:51
19 mai 2006 à 20:22
c'est mieux comme ca ca m'evite encore des tests et de la rapidite
Merci pour ce conseil
19 mai 2006 à 15:19
Mais si j'avais noté, j'aurrai mis que 5.
Je t'explique pourquoi : tu parle d'optimiser les resources..
Bon, pour le gd sit'en a pas besoin, en effet c'est peut etre bon.
Mais pour le reste ( a verifier que c 'est plus rapide )
En tout cas tu pert grave en lisibilité et simplicité de ton code. Pour un petit projet ca va, mais ensuite pour un gros... C'est pas dit qu'au contraire ca te demande pas plus de ressource..
Pour un bon code est d'abord un code court et clair...
ce qui n'est pour l'instant pas le cas.
Sinon, ca :
# $imagePath = './pubs/0.jpg';
# $image = '0.jpg';
Faidrai que tu le parametre au debut de ton code et non, en plein milieu comme un cheveux sur la soupe..
Ne te sent pas offusqué, c'est pour te faire avancer que je dis ca.
Bon code !.
a+
19 mai 2006 à 13:07
je savais pas ;-)
@+
18 mai 2006 à 18:47
donc non je n'utiliserais pas cette fonction
18 mai 2006 à 13:32
Au lieu de faire
if(strtolower($extensionImage[1]) === 'jpg')
{
header('Content-type: image/jpeg');
}elseif(strtolower($extensionImage[1]) === 'png')
{
header('Content-type: image/png');
}elseif(strtolower($extensionImage[1]) === 'gif')
{
header('Content-type: image/gif');
}
fais :
$info_img = getimagesize($info_img); // On obtiens des infos sur l'image
header('Content-type: '.$size['mime']);// On envoie le type de l'image
unset($info_img);
@+
17 mai 2006 à 22:10
oui je connaissait pas getimagesize ;) mais bon je vais repasser en fopen plus rapide je pense comme me l'a conseiller ImmortalPC cela evite d'utiliser la GD.
Sinon mysql_fetch_array bouffe plus de ram que mysql_fetch_row comme je le fait ici, en effet cela retourne un tableau associatif, donc plus de ram (ca se joue pas a beaucoup mais bon ... un peu + un peu+ un peu = beaucoup :P). Sinon mes mysql_fetch_row a repetition ici me permettaient d'atteindre la ligne que je voulais dans la sql (la ligne $selectedId). Cependant je viens de voir mysql_data_seek qui permet d'atteindre cette ligne directement ;) je modifie mon code avec ces dernieres decouvertes et je poste ;)
17 mai 2006 à 21:06
avec getimagesize tu recupere le format de l'image...
ensuite, il faut liberer la mémoire de l'image.
tres drole de manière de programer :
pourquoi n'utilise tu pas mysql_fetch_array ?
au lieu de tes boucles, ta base doit etre mal géré...
fin bon, pour moi c'est tres tres loin d'etre parfait.
a+
17 mai 2006 à 18:42
>ça marche bien si le nom de ton image n' a pas de .
>0.gif ça marche.
>google.fr.gif ça marche plus.
>
>Donc perso je fais :
>$extensionImage = explode('.',$image);
>$extensionImage = $extensionImage[count($extensionImage)-1];
en effet ... ,mais c'est des id et il n'y aura pas de points dedans ;) donc pas besoin de le traiter :P
pour le switch ... oui je vais le faire :P le seul truc c'est que j'avais la fleme de faire des if elseif .. je le ferais ;)
sinon ouais j'ai pas penser au fopen qui je pense est plus rapide... le imagecreatefromjpeg est lent car il fait un fopen + traitement d'image ;)
merci de tes conseils ... je modifie ca sous peu
17 mai 2006 à 14:57
nikel ;-)
A 2 petits trucs :-)
- $extensionImage = explode('.',$image);
ça marche bien si le nom de ton image n' a pas de .
0.gif ça marche.
google.fr.gif ça marche plus.
Donc perso je fais :
$extensionImage = explode('.',$image);
$extensionImage = $extensionImage[count($extensionImage)-1];
- Faire un switch pour 3 choix ça te ralentis pour rien.
vaux mieux faire un if et des elseif.
Sinan je remplacerais :
$extensionImage = explode('.',$image);
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires:'.gmdate("D, d M Y H:i:s", time() - 3600*24*365));
switch(strtolower($extensionImage[1]))
{
case 'jpg':
$gdImage = imagecreatefromjpeg($imagePath);
header('Content-type: image/jpeg');
imagejpeg($gdImage);
break;
case 'png':
$gdImage = imagecreatefrompng($imagePath);
header('Content-type: image/png');
imagepng($gdImage);
break;
case 'gif':
$gdImage = imagecreatefromgif($imagePath);
header('Content-type: image/gif');
imagegif($gdImage);
break;
}
Par
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires:'.gmdate("D, d M Y H:i:s", time() - 3600*24*365));
$info_img = getimagesize($info_img); // On obtiens des infos sur l'image
header('Content-type: '.$size['mime']);// On envoie le type de l'image
$fp = fopen($image, 'r');// On ouvre l'image
echo (fread($fp, filesize($image)));// On lit l'image
fclose($fp);// On ferme l'image
C' est koi le plus rapide ??
fopen ou les fonctions de création des images ???
10/10 ;-)
@+