Gro import => Timeout - PHP - Programmation
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 ?
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.
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. |
lis plus haut...
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 ?
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...
Marsh Posté le 26-08-2005 à 14:52:10
jai un hebergement chez ovh aussi .
tu utilise max_execution_time chez eux ?
Marsh Posté le 26-08-2005 à 15:07:19
benou_z a écrit : jai un hebergement chez ovh aussi . |
oui avec ini_set (ya aussi set_time_limit)
et tu as aussi accès aux commandes mysql !
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).
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
Marsh Posté le 02-09-2005 à 11:43:18
=> soju
Quel timeout utilises tu ?
jai essayé 300 et ca plante.... une idée ?
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 ?
Marsh Posté le 02-09-2005 à 12:05:06
ba nan pas de message derreur...c pour ca
"impossible d'afficher la page".....
Marsh Posté le 02-09-2005 à 13:55:33
c clair...donc fo baisser le timeout....tu le mets a combien toi ?
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.
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 ?
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.
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
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
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...
Marsh Posté le 02-09-2005 à 16:52:27
oui effectivement, ca ecrase....moi je veux pas ecraser ..lol...pas tro compris le viper...
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