Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1654 connectés 

 

 

 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12
Auteur Sujet :

Tuto des scripts PHP les plus demandés et des astuces.

n°1121702
skeye
Posté le 16-06-2005 à 11:16:09  profilanswer
 

Reprise du message précédent :

flo850 a écrit :

$arrFichier[] = $filename c'est equivalent a $arraFichier = array_push($arrFichier,$filename); ?  
 
 [:youyou2224]


Oui.


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 16-06-2005 à 11:16:09  profilanswer
 

n°1121779
Berceker U​nited
PSN : berceker_united
Posté le 16-06-2005 à 11:58:04  profilanswer
 

D'après la doc offciel oui  

n°1122053
FlorentG
Unité de Masse
Posté le 16-06-2005 à 15:14:53  profilanswer
 

ratibus a écrit :

Encore plus rapide :D

Code :
  1. foreach (glob($directory."*.jpg" ) as $filename) {
  2.    $arrFichier[] = $filename;
  3. }



Et ça sert à quoi de copier avec un foreach inutile le tableau retourné par glob dans un autre tableau ? :D

$arrFichier =& glob($directory . '*.jpg');

n°1122073
ratibus
Posté le 16-06-2005 à 15:21:49  profilanswer
 

Très bonne remarque LOL

n°1122098
FlorentG
Unité de Masse
Posté le 16-06-2005 à 15:30:25  profilanswer
 

Et puis vu dans les commentaires, le mieux c'est ça :

$arrFichier =& glob($directory . '*.jpg') or array();


Comme ça si glob ne trouve rien, au lieu de mettre false dans $arrFichier, et ainsi de tout faire foirer au prochain foreach, il fout un array vide :)

n°1122197
Berceker U​nited
PSN : berceker_united
Posté le 16-06-2005 à 16:23:18  profilanswer
 

FlorentG Winner de la journée  [:bigoudi33]

n°1122200
FlorentG
Unité de Masse
Posté le 16-06-2005 à 16:24:37  profilanswer
 

Champagne !

n°1122322
Berceker U​nited
PSN : berceker_united
Posté le 16-06-2005 à 17:25:24  profilanswer
 

En tous cas merci a tous les participants parce que lorsque je vois qu'il y a eu plus de 6000 visites alors que ce topic n'a que quelques mois je me dis que quelque part il y avait de la demande malgré certaine personnne n'y croyant pas :kaola: .  
Bref, ce topic m'appartient pas alors des trucs et astuce sont toujours la bienvenu!... :hello:


Message édité par Berceker United le 16-06-2005 à 17:27:07
n°1122581
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 16-06-2005 à 22:29:41  profilanswer
 

FlorentG a écrit :

Et ça sert à quoi de copier avec un foreach inutile le tableau retourné par glob dans un autre tableau ? :D

$arrFichier =& glob($directory . '*.jpg');



En fait, moi je préfère le foreeach par habitude car je ne récupère que très rarement uniquement le chemin du fichier, je demande d'autres infos comme la taille, le filename, le type, etc. une fois obtenu le nom complet du fichier. C'est aussi pour cette raison que je préfère mettre un compteur, pour être sûr que les éléments ne seront pas tronqués ou non correspondants entre eux.

n°1122915
drasche
Posté le 17-06-2005 à 11:09:49  profilanswer
 

c'est normal que glob soit plus lent qu'une lecture séquentielle? [:joce]
 
cette séquence de code est plus rapide qu'un glob sur ma machine ici (P4 1.5Ghz, disque Seagate ST340016A, PHP 4.3.11).

Code :
  1. /*
  2.   Get the complete directory's images list
  3. */
  4. function getDirList($strPth) {
  5.   $strDir = '';
  6.   $strAryDir ='';
  7.   $lDirNbr = 0;
  8.   if ($hDir = @opendir($strPth)) {
  9.     while ($strDir = readdir($hDir)) {
  10.       if ($strDir != '.' && $strDir != '..') {
  11.         $strAryDir[$lDirNbr] = $strDir;
  12.         $lDirNbr++;
  13.       }
  14.     }
  15.     closedir($hDir);
  16.     return $strAryDir;
  17.   }
  18.   else {
  19.     return '';
  20.   }
  21. }


 
Mes appels, pour info:

Code :
  1. $aryFiles = getDirList(ROOT .'/img/smilies/std/');
  2. //$aryFiles =& glob(ROOT .'img/smilies/std/*.gif');


 
Vous remarquerez que dans ma version, je ne fais même pas un filtre sur les .gif, je prends tout et je filtre plus loin (dans mon cas de toute façon, ça doit se limiter à 1 fichier à exclure).
 
Je garderai les 2 versions pour tester chez moi...


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 17-06-2005 à 11:09:49  profilanswer
 

n°1123016
Berceker U​nited
PSN : berceker_united
Posté le 17-06-2005 à 12:22:18  profilanswer
 

drasche a écrit :

c'est normal que glob soit plus lent qu'une lecture séquentielle? [:joce]
 
cette séquence de code est plus rapide qu'un glob sur ma machine ici (P4 1.5Ghz, disque Seagate ST340016A, PHP 4.3.11).

Code :
  1. /*
  2.   Get the complete directory's images list
  3. */
  4. function getDirList($strPth) {
  5.   $strDir = '';
  6.   $strAryDir ='';
  7.   $lDirNbr = 0;
  8.   if ($hDir = @opendir($strPth)) {
  9.     while ($strDir = readdir($hDir)) {
  10.       if ($strDir != '.' && $strDir != '..') {
  11.         $strAryDir[$lDirNbr] = $strDir;
  12.         $lDirNbr++;
  13.       }
  14.     }
  15.     closedir($hDir);
  16.     return $strAryDir;
  17.   }
  18.   else {
  19.     return '';
  20.   }
  21. }


 
Mes appels, pour info:

Code :
  1. $aryFiles = getDirList(ROOT .'/img/smilies/std/');
  2. //$aryFiles =& glob(ROOT .'img/smilies/std/*.gif');


 
Vous remarquerez que dans ma version, je ne fais même pas un filtre sur les .gif, je prends tout et je filtre plus loin (dans mon cas de toute façon, ça doit se limiter à 1 fichier à exclure).
 
Je garderai les 2 versions pour tester chez moi...


 
 [:chewyy] Remarque interessante, j'attend les resultats.  
Est ce que je redeviendrais un winner ? [:bigoudi33] drasche nous le diras :D

n°1123119
drasche
Posté le 17-06-2005 à 14:16:06  profilanswer
 

Comme un con, j'oublie de donner les chiffres :o
 
22ms avec glob, 16ms avec ma méthode; 32 fichiers sont lus dans le répertoire dont un seul ne correspond pas au filtre.
 
J'essaie avec 238 fichiers dont 7 ne matchent pas: 23ms avec ma méthode, environ 70ms avec glob. Je réessaierai dans de meilleures conditions ce soir.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1123124
ratibus
Posté le 17-06-2005 à 14:17:54  profilanswer
 

Dans ta fonction getDirList tu filtres pas sur les gif, ce que tu sembles faire avec le glob, c'est normal ?

n°1123135
drasche
Posté le 17-06-2005 à 14:26:41  profilanswer
 

oui, comme je le disais, je filtre les gif à l'extérieur de cette fonction. Je retire évidemment ces tests lorsque je mesure les perfs de la fonction glob ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1123146
FlorentG
Unité de Masse
Posté le 17-06-2005 à 14:29:37  profilanswer
 

Bah faut laisser les tests, non ? Vu que glob filtre... Toi tu ne fais que récupérer la liste...

n°1123153
drasche
Posté le 17-06-2005 à 14:33:53  profilanswer
 

Quand j'utilise glob, je filtre directement à l'appel de fonction, donc je ne vois pas l'intérêt de laisser les tests de filtrage que j'utilise avec l'autre méthode :??:  Ou je me suis mal exprimé? [:autobot]


Message édité par drasche le 17-06-2005 à 14:34:14

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1123157
FlorentG
Unité de Masse
Posté le 17-06-2005 à 14:37:06  profilanswer
 

Ben si, pour voir la vraie différence de temps, il faut que ça produise le même effet, non ? Donc si tu vire le filtrage, ça fait un truc en moins par rapport à glob :??: Ou ai-je mal compris ? [:autobot]

n°1123178
drasche
Posté le 17-06-2005 à 14:46:15  profilanswer
 

T'as mal compris [:chacal_one333]
 
Ca produit bien le même effet dans les deux situations :) (sinon cette comparaison n'a pas de sens ;) )


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1123180
FlorentG
Unité de Masse
Posté le 17-06-2005 à 14:46:45  profilanswer
 

Okkkkké :D

n°1123386
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 17-06-2005 à 16:07:06  profilanswer
 

Drasche => Tu fais comment pour les benchs ?
Moi j'y arrive pas.
J'ai voulu bencher des glob vs d'autres solutions, mais je n'obtiens jamais les mêmes résultats, sur 10000 fichiers x 10000, sur 100 fichiers x 100000 essais, etc.
Y'a pas un outil fiable pour tester l'efficacité de telle fonction par rapport à une autre ?

n°1123399
ratibus
Posté le 17-06-2005 à 16:12:28  profilanswer
 

Y a peut-être certains cas où elle est plus rapide et d'autres cas où elle est plus lente ;)

n°1123416
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 17-06-2005 à 16:26:08  profilanswer
 

ratibus a écrit :

Y a peut-être certains cas où elle est plus rapide et d'autres cas où elle est plus lente ;)


C'est là où je voulais en venir.
Peut-être que, par exemple (c'est vraiment pour l'exemple, je n'ai pas testé), pour 300 fichiers une méthode est valable et pour 10.000 fichiers, une autre méthode est mieux adapté. C'est comme en MySQL d'ailleurs, utiliser des Index ralenti parfois les choses (c'est rare, mais c'est possible). Il y a quelques commandes à peu près sûre, mais pour d'autres, c'est vraiment dur de tester la vitesse, d'où ma question, y'a t il un moyen ou un outil permettant de vérifier des vitesses données.

n°1123418
FlorentG
Unité de Masse
Posté le 17-06-2005 à 16:27:00  profilanswer
 

Y'a la comparaison de temps un peu bourrin. Sinon y'a des trucs genre xdebug qui permettent le debugging de scripts PHP plus facilement :)

n°1123423
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 17-06-2005 à 16:31:34  profilanswer
 

FlorentG a écrit :

Y'a la comparaison de temps un peu bourrin.


Ouai, c'est ce que je fais, mais même sur des grosses fonctions, je n'obtiens jamais un résultat cohérent (0,2 seconces - F5 - 0,065 secondes - F5 - 0,4 secondes - F5  -0,0055 secondes), même sur un test qui répète 10000 fois la même chose. :/
 

FlorentG a écrit :

Sinon y'a des trucs genre xdebug qui permettent le debugging de scripts PHP plus facilement :)


T'as un lien ? (en Français si possible :D)

n°1123424
skeye
Posté le 17-06-2005 à 16:32:12  profilanswer
 

The-Shadow a écrit :

Ouai, c'est ce que je fais, mais même sur des grosses fonctions, je n'obtiens jamais un résultat cohérent (0,2 seconces - F5 - 0,065 secondes - F5 - 0,4 secondes - F5  -0,0055 secondes), même sur un test qui répète 10000 fois la même chose. :/


passe à 1000000.[:skeye]


---------------
Can't buy what I want because it's free -
n°1123426
drasche
Posté le 17-06-2005 à 16:32:25  profilanswer
 

ben perso je regarde le temps global de génération de la page mais il n'y a rien de transcendant dans le code et j'ai répété mes essais pour m'assurer qu'un facteur externe (la DB) n'entre en ligne de compte que de manière minime :spamafote:
 
Je testerai ce soir en mesurant uniquement l'exécution des deux fonctions + filtrage.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1123433
FlorentG
Unité de Masse
Posté le 17-06-2005 à 16:35:54  profilanswer
 

The-Shadow a écrit :

T'as un lien ? (en Français si possible :D)


On t'as déjà dit de laisser tomber le français :D http://xdebug.org/

n°1123448
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 17-06-2005 à 16:45:29  profilanswer
 

skeye a écrit :

passe à 1000000.[:skeye]


ça change rien, sauf que je passe à 200 seconces - F5 - 65 secondes - F5 - 240 secondes, etc.
ça ne m'avance pas beaucoup.

n°1123450
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 17-06-2005 à 16:45:52  profilanswer
 

FlorentG a écrit :

On t'as déjà dit de laisser tomber le français :D http://xdebug.org/


:smiley qui fait un doigt en souriant: :D


Message édité par The-Shadow le 17-06-2005 à 16:46:00
n°1123465
skeye
Posté le 17-06-2005 à 16:51:07  profilanswer
 

The-Shadow a écrit :

ça change rien, sauf que je passe à 200 seconces - F5 - 65 secondes - F5 - 240 secondes, etc.
ça ne m'avance pas beaucoup.


 
Ce que tu lis sur le disque doit rentrer dans le cache du disque...[:urd]


---------------
Can't buy what I want because it's free -
n°1123472
ratibus
Posté le 17-06-2005 à 16:55:17  profilanswer
 

Essaie en utilisant ça entre tes itérations : http://fr2.php.net/manual/en/funct [...] tcache.php
 
Regarde si des fonctions utilisées sont dans la liste des fonctions affectées ;)


Message édité par ratibus le 17-06-2005 à 16:57:01
n°1123486
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 17-06-2005 à 16:59:18  profilanswer
 

skeye a écrit :

Ce que tu lis sur le disque doit rentrer dans le cache du disque...[:urd]


C'est ce que j'ai supposé également, même quand je fais des requêtes j'obtiens de telles différences, mais ça ne m'arrange pas pour tester. :D

n°1123724
drasche
Posté le 17-06-2005 à 23:43:17  profilanswer
 

Bon, j'ai retesté à la maison, mais cette fois avec 2 machines vu la quantité d'images qui transite, histoire de ne pas avoir de charge externe sur la machine qui fait serveur.
 
Temps de génération de page:
glob: 15ms
ma méthode: 8ms.
(347 fichiers traités dont 13 ne matchent pas le filtre)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1125978
Berceker U​nited
PSN : berceker_united
Posté le 21-06-2005 à 10:51:40  profilanswer
 

28- Comment générer un tableau html partir de données venant d'une base de données.
Là actuellement je vois qu'il y a quelques demande concernant cela et pourtant c'est simple alors pour éviter de répéter voici un exemple

Code :
  1. $strOut = '<table>'.chr(13);
  2. $req = "SELECT nom, prenom, adresse,zipcode FROM utilisateur ORDER BY nom,prenom";
  3. $rs = mysql_query($req);
  4. while($data = mysql_fetch_array($rs)){
  5.   $strOut.= '  <tr>'.chr(13);
  6.   $strOut.= '    <td>'.$data['nom'].'</td>'.chr(13);
  7.   $strOut.= '    <td>'.$data['prenom'].'</td>'.chr(13);
  8.   $strOut.= '    <td>'.$data['adresse'].'</td>'.chr(13);
  9.   $strOut.= '    <td>'.$data['zipcode'].'</td>'.chr(13);
  10.   $strOut.= '  </tr>'.chr(13);
  11. }
  12. $strOut.='</table>';
  13. echo $strOut;


Voila, j'espere qu'a partir de là vous allez comprendre un peut le principe de base. Alors venez pas me rabacher les oreilles avec ça encore  [:papy]


Message édité par Berceker United le 21-06-2005 à 10:52:59
n°1126471
FlorentG
Unité de Masse
Posté le 21-06-2005 à 16:31:36  profilanswer
 

Par contre on va te rabacher sur le fait que ta grosse concaténation est inutile et lourdingue :D

n°1126539
Berceker U​nited
PSN : berceker_united
Posté le 21-06-2005 à 17:28:27  profilanswer
 

t'as qu'a faire un tuto sur le php avec le xslt.  [:chewyy]

n°1126541
skeye
Posté le 21-06-2005 à 17:29:50  profilanswer
 

Et un tuto templates, aussi...[:pingouino]

n°1127421
Profil sup​primé
Posté le 22-06-2005 à 14:44:42  answer
 

euh désolé d'arriver en chemin mais l'expression régulière de Xav est (il me semble hein) incorrecte  

Code :
  1. <?
  2. function verif_mail($mail)
  3. {
  4.     $regex = "^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3}))$";
  5.     return (eregi($regex,$mail));
  6. }
  7. if(verif_mail("test@test.te.te.te.te.te.te" ) == true)
  8. echo "cool";
  9. else
  10. echo"pascool";
  11. ?>


retourne cool ....

n°1127423
skeye
Posté le 22-06-2005 à 14:45:22  profilanswer
 

...et?


---------------
Can't buy what I want because it's free -
n°1127425
Profil sup​primé
Posté le 22-06-2005 à 14:46:23  answer
 

ben l'email "test@test.te.te.te.te.te.te" est incorrecte non?

n°1127426
skeye
Posté le 22-06-2005 à 14:46:45  profilanswer
 


Pourquoi ça?:??:


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12

Aller à :
Ajouter une réponse
 

Sujets relatifs
controles des champ et correction du formulaire PHP[PHP]Récupèrer une ressource d'un autre site et l'exploiter
Php et Html[HTML/PHP] Réaliser une message box
jpgraph et phpCode source d'un fichier PHP
Pervasive SQL et php[PROB] PHP debutant - Retour a la ligne
page précédente en phpRSS et PHP
Plus de sujets relatifs à : Tuto des scripts PHP les plus demandés et des astuces.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR