Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2011, 10h28   #1
Membre Expert
 
Avatar de zeyr2mejetrem
 
Homme
Ingénieur développement logiciels
Inscription : novembre 2010
Messages : 401
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : novembre 2010
Messages : 401
Points : 1 641
Points : 1 641
Par défaut Passage de relais entre importeurs

Bonjour à tous,

J'ai le problème suivant avec un script qui importe des fichiers CSV dans mon modèle de donnée en procédant Item par Item

Le script prend un certain temps (env. 35min) et n'est pas "parallélisable" pour des raisons d'accès concurrentiels dans la base.

J'ai testé différentes configurations:

Configuration 1
Si je mets un set_time_limit=0 et que j'importe tous mes items le script tourne mais je finis par "perdre" la sortie standard et j'ai des problèmes au bout d'un moment avec Zend_Db car des instructions sont demandées alors que la base est encore à la traîne ce qui provoque des violations d'intégrité (foreign keys). Bref, ce n'est pas satisfaisant

Configuration 2
Si j'importe mes items 100 par 100 et que je programme le cron pour lancer l'importeur toutes les minutes tout fonctionne bien mais mon temps d'exécution global explose. Sans compter que si mon fichier CSV ne contient que 200 items, par exemple, mon importeur se lance 2 fois normalement puis X fois à vide (car le CRON ne sait pas que le traitement est fini) et que si mon fichier contient trop d'items, les derniers ne sont pas importés si on dépasse le créneau horaire du cron

Voila ce que je voudrai faire et ce sur quoi je voudrais votre avis.
Je voudrais lancer mon importeur pour une durée minimale donnée (ex: 10min) puis je voudrai que dépassé ce timeout il rédémarre un nouvel import indépendant si il reste des items à traiter puis meure immédiatement après l'appel. (Je ne sais pas si je suis clair. )
Pour l'instant la seule piste que j'ai serai de lancer une commande system en redirigeant la sortie standard ailleurs pour faire tourner la commande sur un thread différent de celui du script PHP

Auriez vous une méthode plus élégante ? Merci d'avance
L'application est en Zend 1.10.8
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne.
Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie.
zeyr2mejetrem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h45.


 
 
 
 
Partenaires

Hébergement Web