Gro import => Timeout

Gro import => Timeout - PHP - Programmation

Marsh Posté le 26-08-2005 à 14:06:54    

Hello !
 
je souhaite importer un ficher CSV contenant + de 50.000 Ref ds mysql
via un script php (petit module dimport). cependant jai un pblm de timeout.
forcement, ca prends + de 30 sec.
jai testé en le decoupant en plein de petits fichiers...ca marche plutot pas mal...mais c 'est trop lent comme process.
Quelqu'un aurait une solution pour importer mon fichier en une fois ?
Merci

Reply

Marsh Posté le 26-08-2005 à 14:06:54   

Reply

Marsh Posté le 26-08-2005 à 14:09:50    

le mieux serait d'utiliser les commandes mysql...
sinon, si ton hebergeur le permet, change la valeur de max_execution_time avec ini_set


Message édité par soju le 26-08-2005 à 14:10:27
Reply

Marsh Posté le 26-08-2005 à 14:12:18    

merci
=> commandes mysql : pas possible car le module doit etre utilisé par une personne lambda...
=> max execution time...je vais essayer...merci
Quel quun a une autre proposition ?

Reply

Marsh Posté le 26-08-2005 à 14:32:41    

personne d'autre n a une tite idée ?

Reply

Marsh Posté le 26-08-2005 à 14:32:58    

Avec mysql, si tu importes plusieurs lignes en une seule requette, ca ira beaucoup plus vite qu'avec une requette par ligne.
En php, il y a une fonction pour changer la durée de timeout quand la fonction n'est pas bloqué (c'est le cas chez quasiment tous les hébergeurs gratuits) mais je me souviens plus laquelle.

Reply

Marsh Posté le 26-08-2005 à 14:34:23    

omega2 a écrit :

Avec mysql, si tu importes plusieurs lignes en une seule requette, ca ira beaucoup plus vite qu'avec une requette par ligne.
En php, il y a une fonction pour changer la durée de timeout quand la fonction n'est pas bloqué (c'est le cas chez quasiment tous les hébergeurs gratuits) mais je me souviens plus laquelle.

lis plus haut...

Reply

Marsh Posté le 26-08-2005 à 14:35:35    

malheureusement, le timeout est bloqué, meme en mutualisé payant.... i lfaut avoir un serveur dediée pour le gerer ?

Reply

Marsh Posté le 26-08-2005 à 14:38:02    

benou_z a écrit :

malheureusement, le timeout est bloqué, meme en mutualisé payant.... i lfaut avoir un serveur dediée pour le gerer ?


je suis chez ovh en mutualisé et c'est possible
 
sinon :
- t'as pas acces au commande mysql ??
- tu peux aussi faire une page qui se recharge automatiquement et fais à chaque fois un bout du travail... mais c'est du bidouillage...

Reply

Marsh Posté le 26-08-2005 à 14:52:10    

jai un hebergement chez ovh aussi .
tu utilise max_execution_time  chez eux ?  

Reply

Marsh Posté le 26-08-2005 à 15:07:19    

benou_z a écrit :

jai un hebergement chez ovh aussi .
tu utilise max_execution_time  chez eux ?


oui avec ini_set (ya aussi set_time_limit)
et tu as aussi accès aux commandes mysql !
 
 

Reply

Marsh Posté le 26-08-2005 à 15:07:19   

Reply

Marsh Posté le 26-08-2005 à 23:42:30    

ok merci !
 
jai acces a mysql, mais l'objectif est vraiment d'atterir sur ma page
> import.php > parcourir, aller chercher le fichier CSV de 1 mega, l'uploader sur le serveur mutualisé OVH
puis ensuite lancer mon traitement => Comparer le csv avec le contenu de la base et mettre a jour ! ( cela prend au moins entre 5 et 10 minutes je pense).

Reply

Marsh Posté le 27-08-2005 à 13:45:58    

si tu remplis toutes les colones de la table tu peux peut être utiliser replace à la place d'insert :
http://www.nexen.net/docs/mysql/an [...] en=replace

Reply

Marsh Posté le 02-09-2005 à 11:43:18    

=> soju
 
Quel timeout utilises tu ?
jai essayé 300 et ca plante.... une idée ?

Reply

Marsh Posté le 02-09-2005 à 11:56:30    

benou_z a écrit :

jai essayé 300 et ca plante.... une idée ?


et ça plante comment ? message d'erreur ?

Reply

Marsh Posté le 02-09-2005 à 12:05:06    

ba nan pas de message derreur...c pour ca
"impossible d'afficher la page".....

Reply

Marsh Posté le 02-09-2005 à 12:55:52    

Traduction : "le serveur, il répond pas assez vite"

Reply

Marsh Posté le 02-09-2005 à 13:55:33    

c clair...donc fo baisser le timeout....tu le mets a combien toi ?

Reply

Marsh Posté le 02-09-2005 à 14:01:52    

Moi, j'y touche pas n'ayant pas besoin d'y toucher. Et si j'ai besoin de plus de temps, je me démerde pour envoyer des infos au navigateur de maniére réguliére afin de faire patienter et le navigateur et la personne qu'est devant.
Et je peux pas envoyer d'infos réguliérement, je me démerderais pour rediriger le navigateur vers une autre page qui sera chargé de lui dire que c'est "en court de traitement" et qui vérifiera de maniére réguliére si le traitement est finis et si c'est possible, où il en est ce traitement.

Reply

Marsh Posté le 02-09-2005 à 14:39:43    

ok...merci...
et toi soju, qul timeout met tu chez OVH ?
sinon quelquun connait un logiciel qui permet de se connecter a mysql et de mettre a jour la base ?
genre SQL CONTROL CENTER...dans lidée ?

Reply

Marsh Posté le 02-09-2005 à 14:48:22    

avec 300 ça marche chez moi, mais j'envois régulièrement des données au navigateur afin d'éviter le timeout coté client.
 
en soft mysql ya http://www.mysqlfront.de/ mais je doute que cela fonctionne vu qu'il faut que le serveur ovh accepte les connexions externes.

Reply

Marsh Posté le 02-09-2005 à 14:55:04    

jai un autre hebergeur qui accepte les connexions externees c pour ca...merci pour ta réponse, donc 300 ca passe

Reply

Marsh Posté le 02-09-2005 à 15:00:27    

le soft permet de mettre a jour ou seulement decraser ?

Reply

Marsh Posté le 02-09-2005 à 15:34:16    

si la solution existe en php .. (evidement j'ai plus le code sur moi)
l'idée c'est de différer l'écriture dans le output et de terminer le load de la page web que quand ton import/export est terminé.. moi j'y avais un script qui pouvait tourner indéfiniment comme ça (avec une barre de progression)
 
http://fr3.php.net/manual/fr/function.ob-start.php
http://fr3.php.net/manual/fr/function.ob-flush.php
 
cadeau-->
voilà ce que j'avais trouvé et modifié:
http://fr3.php.net/manual/fr/function.flush.php#52147

Reply

Marsh Posté le 02-09-2005 à 15:56:51    

benou_z a écrit :

le soft permet de mettre a jour ou seulement decraser ?


avec une requete sql tu peux mettre à jour,"écraser"... donc à ton avis ?
et le mieux à faire dans ces cas là c'est comme même d'essayer
 

la viper a écrit :

si la solution existe en php [...] moi j'y avais un script qui pouvait tourner indéfiniment comme ça (avec une barre de progression)


la solution à quoi ? le problème n'était pas de faire une barre de progress, mais de gérer max_execution_time...
et ton script je vois mal comment il peut "tourner indéfiniment" sans modifier max_execution_time justement...
 
 
 
 

Reply

Marsh Posté le 02-09-2005 à 16:52:27    

oui effectivement, ca ecrase....moi je veux pas ecraser ..lol...pas tro compris le viper...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed