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

  FORUM HardWare.fr
  Programmation
  PHP

  PHP/MySQL et CDDB........

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP/MySQL et CDDB........

n°277980
USA Mike
WWW-->We Will Win
Posté le 01-01-2003 à 13:29:25  profilanswer
 

bonjour,  
 
je viens de télécharger la grosse base de données CDDB de 140 Mo compressée.  
Celle-ci se prensente sous la forme d'une grosse liste de fichiers textes  
bien structurés et exploitables.  
Quelqu'un saurait-il s'il existe une interface déjà faite avec PHP  
qui permette d'insérer le contenu de ces fichiers dans une base de données en l'occurence MySQL.  
 
Merci de me le dire car sinon, je commence ce projet.  
J'aimerai avoir la possibilité de faire mes recherches de titres de chansons off-line et donc c'est la seule solution agréable que j'ai trouvé.  
Plutôt que de dire à windows de chercher la chaine x dans les fichiers.


---------------

mood
Publicité
Posté le 01-01-2003 à 13:29:25  profilanswer
 

n°277981
USA Mike
WWW-->We Will Win
Posté le 01-01-2003 à 13:30:06  profilanswer
 

bon !  
n'ayant pas eu de réponse rapidement, je fais ce que je voulais faire  
c'est-à-dire faire un script PHP qui enregistre le contenu des fichiers  
de la CDDB dans une base SQL.  
 
 
 
Seulement j'ai un problème incompréhensible :  
à l'ouverture d'un fichier, j'ai une erreur 'Resource id #3' renvoyée par un 'fopen'  
 
Aidez-moi !  
 
mon script est dispo à http://usa.mike.free.fr/mycddb.zip  
il ya dans le zip :  
 
'creation.SQL.sql' pour créer votre base avec MySQL  
'config_server.php' les paramêtres d'accès à la base (moi j'utilise EasyHP en local)  
'index.php' l'entrée du script (la valeur par défaut suffit, cliquez juste sur le bouton)  
'grab.php' le script  
'fn_misc.php' les différentes focntions dont je me sers et que j'ai fait (sans bug connu)  
'fn_db.php' fonction d'enregistrement dans la base ou affichage à l'écran  
'cddb' un répertoire contenant 3 exemples de fichiers de la CDDB  
 
Si vous voulez l'intégralité de ces fichiers CDDB, ils sont dispo à http://www.freecddb.org  
Je vous préviens c'est un gros ZIP de 140 Mo qui comprend 700 Mo de fichiers Txt  
 
 
Bon mon problème (qui doit être très con je pense) :  
Tout d'abord, modifier la valeur de $FAIRE dans 'fn_db.php' suivant ce que vous voulez faire :  
$FAIRE=1; // on écrit les infos dans la base  
$FAIRE=2; // on écrit les reqêtes dans un fichier sql.txt  
$FAIRE=3; // on affiche uniquement les infos, on ne fait pas d'enregistrement  
 
Ouvrez le fichier 'grab.php', à la ligne 3 il y a :  
GRAB_FICHIER("cddb/1.txt" );  
ça, ça marche très bien (faites un essai avec $FAIRE=1, vous verrez)  
 
ensuite il y a GRAB_FICHIER("cddb/2.txt" );  
et ça, ça ne marche pas, ni le GRAB_FICHIER("cddb/3.txt" ); qui suit derrière.  
à l'écran, tout tout en bas de la page, j'ai affiché la valeur retourné par fopen qui est du style :  
'Resource id #x' ou x est une valeur qui varie je ne sais pas comment.  
J'affiche cette valeur à la ligne 134 de 'fn_misc.php' avec :  
echo "!!!!!!!!!!! erreur: $FIC avec $FICHIER !!!!!!!!!!!!!!!!
";  
Auparavant je fais bien :  
$FIC=fopen($FICHIER,"r" );  
if ($FIC==1)  
{  
echo "Grabbing du fichier $FICHIER ...";  
while (!feof($FIC)) {....}  
}  
else  
echo "!!!!!!!!!!! erreur: $FIC avec $FICHIER !!!!!!!!!!!!!!!!
";  
 
 
Moi je comprends par ce message que c'est un problème de ressource.  
l'exécution du GRAB_FICHIER("cddb/1.txt" ); génére 6500 requêtes  
Alors je me dis :  
"tiens !!, Mysql n'arrive plus à suivre et est débordé, donc c'est nu problème de ressource"  
mais là je me dis aussi que je travaille en local, sur une machine assez performante (1.3Go et 512 RAM)  
donc il devrait quand-même suivre cette cadence  
(.. quand je pense que c'est pas 3 fichiers qu'il faudra traiter au final mais 2000....)  
 
Du coup au lieu d'enregistrer mais info dans la base (variable $FAIRE), je décide de généré un fichier texte avec dedans  
les requpetes SQL  
je met donc '$FAIRE=2' dans 'fn_db.php'  
Et là ! Idem !! même problème !!! le 1er fichier marche mais pas les autres.  
alors maintenant je me dis que c'est peut-être apache qui suit plus car ecrire un fichier texte doit etre moins lourd en ressource  
qu'exécuter des requêtes dans mySQL.  
 
Du coup au lieu de créer ce fichier texte, je vais tout simplement afficher les résultats à l'écran.  
je met donc '$FAIRE=3' dans 'fn_db.php'  
Et encoire même problème machin de ressource à la con !!  
Je ne comprend pas.  
J'ai pourtant bien vérifié que j'ouvre proprement mon fichier, que je teste bien son ouverture, que je le referme bien.  
 
où est le chmil-blic ??  
est-ce que je referme mal mon fichier ?  
est-ce un problème de ressoure ?  
est-ce un problème de temporisation ?  
est-ce un problème de buffer ?  
est-ce un autre problème ?  
 
help-me !


---------------

n°278229
beleg
黑社會
Posté le 02-01-2003 à 03:09:13  profilanswer
 

trop bizarre, le code que je viens de voir lespace de 3 minutes me semble niquel et pourtant, quand on voit ton probleme, ya de koi se poser des questions.
 

Citation :


If the open fails, the function fopen returns FALSE.  


 

Citation :


 $FIC=fopen($FICHIER,"r" );
 echo "Ouverture $FIC $FICHIER<br>\n";
 if ($FIC != false)  
  {
  echo "Grabbing du fichier $FICHIER ...<BR><FONT SIZE=2>";
  while (!feof($FIC))


 
et voila ...


Message édité par beleg le 02-01-2003 à 03:09:49
n°278240
USA Mike
WWW--&gt;We Will Win
Posté le 02-01-2003 à 08:50:48  profilanswer
 

mais dans la doc PHP, ya bien écrit que fopen renvoie 1 quand tout ce passe bien, sinon autre chause.


---------------

n°278260
beleg
黑社會
Posté le 02-01-2003 à 10:31:36  profilanswer
 

pas ds la mienne, et je vois pas comment si ca retourne toujours 1, on fait la difference entre 2 fichiers ouverts en meme temps.

n°278267
raph93
Posté le 02-01-2003 à 10:57:35  profilanswer
 

Merci pour l'info , ca faisait longtemps ke je cherchais a savoir si cette base etait exploitable.
 
en fait avec ce fichier texte, il faut le formater et l'inserer dans une base , ensuite tu peux manipuler les données comme tu le souhaite


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278343
USA Mike
WWW--&gt;We Will Win
Posté le 02-01-2003 à 13:59:02  profilanswer
 

C bon je viens de corrigerle problème et ça marche nickel
attention, j'ai enlévé du ZIP les exemple de fichier CDDB (pas les droit !!)
alors allez les télecharger sur le site officiel.
Aussi, ces fichiers ne sont plus obligés d'etre dans /files, vous pouvez les mettre où vous voulez sur votre disque
C:\temp\cddb\ par exemple !
 
sinon faite gaffe !
il faut mettre un min_execution_time=0 car pour foutre dans mysql 9 Mo de fichiers, ça ma prit 3 minutes sur ma machine pourtant assez performante (1.3G 512 Ram) alors imaginez le temps qu'il faut pour incorporer les 700 Mo de fichiers textes.
 
Pour info, la base générée avec Mysql est de taille plus petite que les fichiers (logique, car on n'a pas tout gardé comme info)
n'empêche que c'est un bon moyen pour tester une base donnée mon machin.
Je vais essayer de faire le même pour une base access.....
 
 
 


---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP/MySQL et CDDB........

 

Sujets relatifs
incorporer la CDDB dans MySQL avec PHP[PHP/MySQL] Probable erreur de débutant.
Passer un dump de postresql a mysql[PHP] Travail sur le nom même d'une variable
[mysql] aide pour une requettepb ODBC linux MySQL
cherche nom user et mot de passe pour se connecter via mysql-front ... 
Plus de sujets relatifs à : PHP/MySQL et CDDB........


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