#22058 [Bgs]: Sending mail with large attachments uses unreasonable amounts of memory
| From: | brienfwd at bigfoot dot com | Date: | Tue, 04 Feb 2003 22:53:30 +0000 |
| Subject: | #22058 [Bgs]: Sending mail with large attachments uses unreasonable amounts of memory | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-12969@lists.php.net to get a copy of this message | ||
ID: 22058
User updated by: brienfwd@bigfoot.com
Reported By: brienfwd@bigfoot.com
Status: Bogus
Bug Type: PEAR related
Operating System: linux
PHP Version: 4.2.0
New Comment:
wouldn't a more powerful mail api that is attachment aware and doesn't
load the entire file into memory be feasible?
Previous Comments:
------------------------------------------------------------------------
[2003-02-04 16:12:14] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
This is nothing usual or something that can be addressed. When dealing
with large strings in PHP, the memory usage will nearly always be few
times larger then the original string especially if you are performing
various string mangling functions on it.
Your best solution may to switch from PEAR/IMP solution to something
else not OO based that will make fewer copies of the string.
------------------------------------------------------------------------
[2003-02-04 15:41:57] brienfwd@bigfoot.com
I've just tracked down a long standing problem I've had with the IMP
webmail
problem and large attachments. I've configure IMP 3.1/PEAR 1.0.1 to
use SMTP
to talk to a local mail server. Sending a message with a 13MB
attachment (19
MB encoded) causes the memory usage to shoot up to 122MB. This seems to
be due
to the handling of the message body with regards to string copies and
regular
expression replacements.
This effectively limits the size of attachements that are useable
within imp
not to mention puts a pretty big strain on my server.
In particular, my installation seems to crap out consistently on the
line
inside the data() function:
$data = preg_replace("/([^\r]{1})\n/", "\\1\r\n", $data);
There are a couple of ways to solve this problem. The best solution,
which is
probably the hardest, is to refactor the SMTP api to be more aware of
file
attachments and avoid doing the read-file/encode/write-to-network on
the entire
file. If the SMTP layer was aware of file attachments, it could do the
read-
file/encode/write-to-network on reasonably sized blocks.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22058&edit=1