[RESOLU] [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

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 : [RESOLU] [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

Re: [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par dioscurde » 21 juin 2021, 18:50

Je rajouterais que si tu n'as qu'un élément à récupéré, casse ton foreach avec un return / exit / break une fois l'exécution terminé. De cette façon, si ton if à matché au bout de l'élément 50 sur 500 par exemple, il ne vérifiera pas inutilement les 450 autres vu que tu n'en à qu'un de correct. J'ai était clair ? :?: #-o
Je répond encore tardivement, désolé.
Merci pour l'astuce =D> un petit break et ca repart :)

Re: [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par Shadowwera » 02 juin 2021, 15:25

Je rajouterais que si tu n'as qu'un élément à récupéré, casse ton foreach avec un return / exit / break une fois l'exécution terminé. De cette façon, si ton if à matché au bout de l'élément 50 sur 500 par exemple, il ne vérifiera pas inutilement les 450 autres vu que tu n'en à qu'un de correct. J'ai était clair ? :?: #-o

Re: [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par dioscurde » 01 juin 2021, 07:33

Salutations !

Est-ce que tu utilises id3_get_tag() pour lire tes tags ...
En fait j'utilise un script capté sur le web (juste pour le cover) : "mp3data.php".
_Bien vu le "!empty"_

Re: [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par Ryle » 27 mai 2021, 13:50

Salutations !

Comme indiqué par or1, ton fichier mp3 ne peut avoir qu'une seule couverture et n'aura qu'un seul tag picture. Il n'est donc pas nécessaire de faire un foreach pour parcourir celui-ci et tu n'étais pas loin avec le if, c'est juste que la syntaxe n'était pas bonne (puisque tu ne boucles pas sur des éléments, tu ne peux pas les affecter avec un AS comme pour un foreach).

Tu peux l'écrire ainsi :
if (!empty($data['tag']['picture'])) {
   $image = $data['tag']['picture'];
   /*extraction du cover du fichier traité*/
}
Mais comme indiqué par or1, tu ne gagneras pas grand chose à l'exécution. Est-ce que tu utilises id3_get_tag() pour lire tes tags ou autre chose ? Est-ce que tu ne prends en compte que les nouveaux fichiers (pour éviter d'extraire plusieurs fois la même information) ? Il y a peut être moyen d'optimiser le traitement à ce niveau là...

Après, je ne sais pas ce que tu fais de ces informations ensuite,

Re: [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par dioscurde » 26 mai 2021, 23:40

ok d'accord... je me dis que p-e c'est le temps de lire et d'écrire +de 500 cover qui dois faire que c'est lent (c'est fou les données que cela contient juste pour une image, alors +de 500... )
édit : pardon pour mon impolitesse :priere: :arrow: Merci d'avoir pris le temps de me répondre.

Re: [tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par or 1 » 26 mai 2021, 23:15

faire une boucle quand ce n'est pas nécessaire car il n'y aura qu'une seule itération, n'est pas ce qui cause la lenteur du chargement de la page.

il faut donc regarder dans le reste du code ce qui est lent, et s'il n'y a pas moyen d'éviter ce qui est lent, faire en sorte que l'instruction lente soit exécutée moins de fois dans le script, en appellent plusieurs fois le script avec des données différentes à chaque fois.

[tags id3] une boucle dans une boucle... pour un seul fichier?! oO

par dioscurde » 26 mai 2021, 22:45

Bonjour / bonsoir (même que il est tard actuellement),

je viens à vous car j'ai un petit bout de code qui me titille les neurones et je ne sais pas, il me parait pas optimisé, et pour cause ; le temps que mets la page à se charger est affolant.
Comme écris dans le titre j'ai une boucle dans une boucle, tout cela pour extraire les data_tags des covers de mes fichiers mp3.
voici en gros ce que cela donne :

Code : Tout sélectionner

<?php foreach($fichier as $lien) { /*quelques instruction içi*/ foreach($data['tag']['picture'] as $image) { /*extraction du cover du fichier traité*/ } } ?>
j'ai tester un "if ($data['tag']['picture'] as $image) " mais cela ne fonctionne pas.
j'ai penser aussi à un FOR (connaissant le nombre de fichier à traiter, 1 seul, une boucle ne semble donc pas être conseillée.)
Du coup je ne sais pas comment faire sans cette boucle interne.

Si vous avez une idée un début de piste ou un exemple je suis preneur. Merci.
Dioscurde.