OVH Cloud OVH Cloud

[debutant] Processus en arriere plan

4 réponses
Avatar
Fabrice
Bonjour,

J'ai plusieurs gros fichiers texte à télécharger quotidiennement en RTC
sur un serveur FTP dans lesquels à chaque fois une seule ligne
m'interesse.
Grace à votre aide j'utilise Net:FTP.

J'ai donc besoin de télécharger le fichier tout en le lisant pour
arreter le telechargement avant la fin quand une certaine expression
reguliere apparait.
Le probleme c'est que $ftp->get(mon fichier) est au premier plan.

J'ai jeté un coup d'oeil à la commande fork, ou open (|-) mais je crois
ne rien y comprendre.

Pourriez-vous me donner un exemple de tel structure.

Merci

--
******************************************************************
Le 08 novembre 2004 à 17 heures 00 minutes

Fabrice
pi.3.14159_yenamarreduspam_@wanadoo.fr
******************************************************************

4 réponses

Avatar
Denis -esp2008-
Bonsoir,

Grace à votre aide j'utilise Net:FTP.
J'ai donc besoin de télécharger le fichier tout en le lisant


Il serait plus simple de modifier Net:FTP pour que le get s'arrête de
lui-même. Ce module est un logiciel libre, il ne faut poas hésiter à le
modifier.

--
Denis

Avatar
Patrick Mevzek

J'ai donc besoin de télécharger le fichier tout en le lisant pour
arreter le telechargement avant la fin quand une certaine expression
reguliere apparait.
Le probleme c'est que $ftp->get(mon fichier) est au premier plan.


Vous devriez pouvoir vous en sortir avec Net::FTP::retr() qui vous
retourne un objet sur lequel vous pouvez utiliser Net::FTP::read() et
donc récupérer le fichier ``par bout''.

Vous vous fixez une taille raisonnable (genre 1024 octets), vous
récupérez le fichier par bout, et, en boucle, vous faites votre test (en
faisant gaffe que votre expression régulière, selon sa taille, peut être
coupée sur plusieurs bouts).

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>

Avatar
Damien GUERIN
Exemple d'utilisation de fork()...:

my $pid = fork();
if ($pid) {
# On place ici le code du fils (par exemple la récupération du
fichier par FTP)
exit 0;
}
else {
# On place le code du père, mais il ne faut pas que le père
s'arrete avant le fils
# On fait donc une boucle jusqu'à la fin du fils :
while (wait()){}
# Ici la récupération du fichier est terminée et le fils s'est
terminée ...
}

Bon courage !




"Fabrice" a écrit dans le message
de news:

Bonjour,

J'ai plusieurs gros fichiers texte à télécharger quotidiennement en RTC
sur un serveur FTP dans lesquels à chaque fois une seule ligne
m'interesse.
Grace à votre aide j'utilise Net:FTP.

J'ai donc besoin de télécharger le fichier tout en le lisant pour
arreter le telechargement avant la fin quand une certaine expression
reguliere apparait.
Le probleme c'est que $ftp->get(mon fichier) est au premier plan.

J'ai jeté un coup d'oeil à la commande fork, ou open (|-) mais je crois
ne rien y comprendre.

Pourriez-vous me donner un exemple de tel structure.

Merci

--
******************************************************************
Le 08 novembre 2004 à 17 heures 00 minutes

Fabrice

******************************************************************



Avatar
Jean-Philippe Caruana
Bonjour,
bonjour


J'ai plusieurs gros fichiers texte à télécharger quotidiennement en RTC
sur un serveur FTP dans lesquels à chaque fois une seule ligne
m'interesse.


faites un grep pour n'avoir que la ligne qui vous intéresse, puis
ensuite téléchargez le fichier, ou récupérez la sortie directement
(pas besoin de perl pour cela)



grep truc fichier.txt > fichier_a_telecharger.txt
téléchargez fichier_a_telecharger.txt ensuite


ou alors
grep truc fichier.txt
(affiche le résultat direct dans la console, qu'on peut mettre dans une
variable)

distant :
variable=`grep truc fichier.txt`

puis en local :
echo $variable > fichier_en_local_sans_télécharger.txt


je ne sais pas si cela correspond au besoin, mais pouquoi utiliser une
rolls pour aller faire ses courses à la superette du coin ? un simple
pannier suffit en général.

--
jpc
http://www.enstimac.fr/~caruana/