in reply to Re: Threaded or Forked FTP Backup with chdir
in thread Threaded or Forked FTP Backup with chdir
- chdir isn't unique to each thread. If you chdir in one thread they all change.
- changing to fork would allow chdir per fork because the memory is copied when forked
- This is an excellent point. You can't pass the full path to put but, you can pass a file handle.
Here is the updated code:
sub worker { my $tid = threads->tid; my( $Qwork, $Qresults ) = @_; my $ftp = Net::FTP->new($gFtpServer, Debug => 0); $ftp->login($gFtpUser, $gFtpPass) or print "unable to loging to $gF +tpServer: $ftp->message\n"; while(my $work = $Qwork->dequeue) { my ($result, $localFile); my (@workItem); @workItem = split (",", $work); chomp($workItem[0]); chomp($workItem[1]); chomp($workItem[2]); print "ftp dir: $workItem[0]\n"; print "local dir: $workItem[1]\n"; print "file: $workItem[2]\n"; $localFile = sprintf("%s%s",$workItem[1],$workItem[2]); open (my $fh, "<", $localFile) or print "unable to open file"; $ftp->cwd($workItem[0]) or print "unable to FTP change dir $work +Item[0]: $ftp->message\n"; $ftp->put($fh, $workItem[2]) or print "unable to FTP $workItem[2 +]: $ftp->message\n"; ## Process $work to produce $result ## $result = "$tid : result for workitem "; $Qresults->enqueue( $result ); } $Qresults->enqueue( undef ); ## Signal this thread is finished $ftp->quit; }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Threaded or Forked FTP Backup with chdir
by BrowserUk (Patriarch) on Dec 20, 2012 at 02:40 UTC |
In Section
Seekers of Perl Wisdom