Re: Imap_Client / streams.
Michael J Rubinsky <[email protected]>
| Newsgroups | gmane.comp.horde.devel |
|---|---|
| Message-ID | <20150505205450.Horde.tKimpHd2V_jgnTGuKI-uRA8@h4.theupstairsroom.com> |
Quoting Michael M Slusarz <[email protected]>: > Quoting Michael J Rubinsky <[email protected]>: > >> I'm having a hard time trying to track down some memory usage >> issues I'm seeing and in doing so, I'm trying to better understand >> what is going on in HIC; When fetching a specific mime part, like >> e.g. an attachment, does HIC always use streams, or does it put the >> entire part's contents in memory at some point? E.g: >> >> $bodypart_params = array( >> 'decode' => true, >> 'peek' => true >> ); >> $query->bodyPart($mime_id, $bodypart_params); >> >> $fetch_res = $this->_imap->fetch( >> $this->_mbox, >> $query, >> array('ids' => new Horde_Imap_Client_Ids(array($uid))) >> ); >> >> >> If $mime_id is some large attachment, will it ever be placed >> completely in memory or is at contained in a temporary stream at >> all times? > > The Tokenize library was converting literal data from stream -> > string, before it was stored in a Data_Fetch object. > > So first I eliminated the stream -> string conversion in Tokenize by > copying the literal data to a separate stream. This is good (max > memory hit would be 2 MB), but not perfect. > > Second step was to not store literal data in the tokenize stream at > all when reading from the remote IMAP server, and instead store as > separate stream objects within the Tokenize object. Now we should > only be copying once to a stream on reading from IMAP stream to the > point that the data becomes available in the Data_Fetch object. > > This will appear in Horde_Imap_Client 2.28.1. I'd like to test this > for a few days before releasing, since if something is broken with > these changes it will cause all message body data to be improperly > parsed. (All unit tests pass, so that is a good sign.) This is fantastic news, thank you! -- mike The Horde Project http://www.horde.org https://www.facebook.com/hordeproject https://www.twitter.com/hordeproject -- dev mailing list Frequently Asked Questions: http://wiki.horde.org/FAQ To unsubscribe, mail: [email protected]
smime.p7s
(application/pkcs7-signature, 5.7 KB) - not displayed