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 !
---------------