Re: IMAP sync tool (rsync for IMAP)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 26 Dec 2006 14:45:43 -0800, "Florin Andrei" <florin@xxxxxxxxxxxxxxx> said:
> John Capo wrote:
> > 
> > A 32MB message occupies a lot more than 32MB when its a Perl string.
> > Use a temp file instead.
> > 
> >     my $message_file = "/tmp/xfer-$$";
> >     unlink($message_file);
> >     $from->message_to_file($message_file, $f_msg);
> > 
> > And further down.
> > 
> >    unless($new_id = $to->append_file($t_fold, $message_file, $flags_f, $d))
> > 
> > Instead of 
> > 
> >    unless($new_id = $to->append_string($t_fold,$string, $flags_f, $d))
> 
> It's hard to tell without actually testing that change, but I assume it 
> would slow down the script a little bit?
> 
> Anyway, slower is better than crashing. I'll try and contact the author 
> to make him aware of this discussion thread.

The usual way to deal with this if you still care about speed is to check
the message size before hand (presumably you've already done a fetch of
the UID list to work out what needs to be copied - just grab the rfc822.size
field as well).

Then pick some sane amount (say, 100kb) and any message bigger than that
goes to disk - smaller messages can be processed directly in memory.

That said, most modern filesystems are pretty good about not causing
excessive IO for temporary files, and /tmp/ could very well be a memory
disk anyway (we have /tmpfs/ for precisely this sort of purpose)

(that and: unless your IMAP servers are really closely network connected
the network IO is going to be your critical path anyway)

Bron.
-- 
  Bron Gondwana
  brong@xxxxxxxxxxx

----
Cyrus Home Page: http://cyrusimap.web.cmu.edu/
Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux