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