isfile() est-il gourmand ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : isfile() est-il gourmand ?

par dhjapan » 15 janv. 2008, 18:59

Effectivement si le for est pas beaucoup plus lent que le while alors j'irai peut être pour le for.

Moi ce qui m'inquietait c'etait plutot qu'un script 20 à 40 fois la fonction file_exists(); ... et ce 1000 fois par jour risque de ramer pas mal.

Merci pour vos conseils :)

par Ryle » 15 janv. 2008, 18:12

Il me semble que le while() est effectivement plus rapide que le for(), mais ça ne commencera à se sentir en dixièmes de secondes qu'à partir de plusieurs millions d'itérations :)

maintenant comme je le disais, si la moindre photo ou vignette manque, ta boucle s'arrête et tu perds toute la fin de ta galerie... Du coup le test pour savoir si le fichier existe n'est pas forcément interessant... personnellement je préférerait une croix rouge au milieu de ma galerie qui m'indique qu'un fichier est absent plutôt qu'une galerie qui s'arrête au 3 ème fichier alors que j'en ai 50 autres qui attendent derrière ;)

L'avantage d'une boucle while sur les éléments d'un dossier, c'est que même en cas d'absence d'un fichier, celle-ci ne s'arrêtera qu'après les avoir tous essayé.. et ca ne t'empêche pas de tester uniquement les miniatures et de vérifier que l'image en taille réelle existe bien :)

par dhjapan » 15 janv. 2008, 17:50

Encore une fois ce qui m'inquiete c'est de savoir si ce genre de teste doit rester ponctuel où si je peux me permettre de le relancer à chaque affichage de ma page.
Personne n'a déjà essayé ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par dhjapan » 15 janv. 2008, 15:25

Utilise la fonction file_exists()
Ah oui effectivement elle correspond mieux a ce que je veux faire.

Ryle, parce qu'en réalité je veux générer un diaporama avec miniatures et images à taille normal. Donc en fait à chaque fois je testerai :

Code : Tout sélectionner

while (file_exists($path."diapo_".$i.".jpg") && file_exists($path."diapo_".$i."_small.jpg")) echo "...";
A prioris une fois défini les images ne changeront pas .. et j'imagine qu'un while (...) echo ...; demandera moins de ressources qu'un for (...) if (...) echo ... ;.

Encore une fois ce qui m'inquiete c'est de savoir si ce genre de teste doit rester ponctuel où si je peux me permettre de le relancer à chaque affichage de ma page.

Merci

par Ryle » 15 janv. 2008, 15:13

Ta seconde solution a surtout l'inconvénient que si un jour tu supprimes le fichier n°2, tu es obligé de renommer tous les autres fichiers pour ne pas que ton while s'arrête au premier fichier inexistant alors que d'autres suivent...

Plutôt que de partir là dessus et tester à chaque fois si le fichier existe, pourquoi ne pas parcourir le dossier (opendir()) et afficher toutes les images que tu y trouves ? :)

par Elie » 15 janv. 2008, 14:45

Utilise la fonction file_exists() :

http://www.manuelphp.com/php/function.file-exists.php

isfile() est-il gourmand ?

par dhjapan » 15 janv. 2008, 14:41

Bonjour,
Pour afficher une serie d'image dans un ordre precis je vois 2 solutions :

1- Je stock les noms des images dans un tableau ou un fichier txt. classique

2- Ou bien je m'arrange pour isoler ces images, que j'aurai correctement renomé (ex:diapo_1.jpg, diapo_2.jpg, diapo_3.jpg, ...), dans un dossier et ensuite je fais quelquechose comme :

Code : Tout sélectionner

$i=1; $path("mondossier/"); while(isfile($path."diapo_".$i.".jpg") { echo "<img src=".$path."diapo_".$i.".jpg"." />"; $i++; }
(j'ai pas testé mon code, y'a peut être une erreure mais c'est surtout pour illustrer)
Je me demandais si la seconde solution etait pas trop gourmande pour le serveur ... ou s'il ne l'etait pas forcement plus qu'une requete SQL.

Merci beaucoup pour votre avis.

Léon