ID: 7848 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Old Status: Feedback Status: Open Bug Type: IMAP related Operating System: NetBSD, Linux, Windows 2k PHP Version: 4.0 Latest CVS (16/11/2000) New Comment:
I can't reproduce this with 4.0.6, latest CVS or 4.1.0RC3 as they don't compile on my machine. Bug already reported on php-qa@. However, the machine was upgraded, although it's still running NetBSD 1.5, Apache 1.3.20 and PHP 4.0.5 as CGI, it's now an Athlon 800 instead of a PPro200, and it's quite fast. However, bug still exists as PHP as module is faster, and the IMAP code hasn't changed quite a lot since last year. Previous Comments: ------------------------------------------------------------------------ [2001-11-27 05:32:01] [EMAIL PROTECTED] Does this problem still occur with the 4.0.6, the latest RC(http://download.php.net/~zeev/php-4.1.0RC3.tar.gz) or the latest CVS? ------------------------------------------------------------------------ [2000-11-29 19:05:24] [EMAIL PROTECTED] I tested imap_fetchstructure() with the pear/Benchmark/Timer.php package with the following code: [...] $timer = new Benchmark_Timer; $timer->start(); $timer->set_marker("42"); $struct_msg = @imap_fetchstructure($pop, $mail); $timer->stop(); $profiling = $timer->get_profiling(); [...] Here're the results with PHP latest snapshot as CGI on a PPro200, 256MB, and POP server being local, Apache 1.3.14, PHP binary is 2MB large (without debugging symbols). I load one mail at a time and see how long it takes for imap_fetchstructure() to parse it depending on the size: - 1KB, no attachment: 0.011 sec - 78KB, no att: 0.225 - 68KB, 1 att: 0.225 - 1428KB, 1 att: 4 to 7 seconds ! With PHP loaded as a module, it's immediate (< 1 second) During the test, the load was 0.6 and I tested several times to be sure of the results. So, to sum up: imap_fetchstructure() is slow with big mails when PHP is compiled as CGI. ------------------------------------------------------------------------ [2000-11-18 11:48:23] [EMAIL PROTECTED] I think I identified the slowliness factor: big mails. Testing with Apache 1.3.14 on NetBSD with PHP 4 latest snapshot and imap 2000 final on a PPro 200/256MB, mail server being POP3 and on the same LAN than the Web server: - mailbox with 15 small (< 10KB) messages: 15 seconds to load - mailbox with 4 messages and one being over 1MB: 30 seconds to load When I test this on Apache 1.3.12 with PHP 4.0.3pl1 as module, IMAP server on the same LAN, on a Celeron 500/256MB: - mailbox with 4 messages and one being over 1MB: 3 seconds to load -> very fast, the slowliness can't be identified when PHP is loaded as a module. It seems like the imap lib is taking a lot of time to parse a _big_ message, that can be seen in CGI mode, not in module mode (at least for Apache). I was wrong with imap_sort() being slow, it didn't change anything with a small mailbox, therefore with a big message, it increases a bit more loading the mailbox: - mailbox with 4 mails and one over 1MB: 30 seconds - same mailbox, imap_sort() commented out: 20 seconds. In all these tests with PHP as CGI, it seems to take 3MB of RAM, no more, even with big messages. I tested all these with IE5 and latest Mozilla which both handle HTML tables correctly unlike Netscape 4.x ok, I finally traced it back to a specific function: I use both imap_header() and imap_fetchstructure() functions for my webmail client: - imap_fetchstructure() commented, I get back to 15-20 seconds with my 4 mails' mailbox and one > 1MB. - imap_header() commented, I get 27 seconds (close to 30 seconds) with the same mailbox. ok, to summarize this :) => With "big" mails (> 1MB or so), imap_fetchstructure() is very slow in CGI mode. Well, no, I'm disappointed, I just tested with a 6 mails' mailbox which of 3 are 1MB large: - normal code: after 2 minutes, php error: "max. 30 seconds time exceeded at line 44" -> imap_fetchstructure() - imap_fetchstructure() commented, 1 minute - imap_fetchstructure() and imap_sort() commented, 45 seconds I know MIME parsing is really a hard job, but why is the CGI version so much slower than the Apache module version ? Any idea ? ------------------------------------------------------------------------ [2000-11-18 09:47:30] [EMAIL PROTECTED] can you trace it back to a specific funtion? ------------------------------------------------------------------------ [2000-11-16 12:45:59] [EMAIL PROTECTED] I (with a friend) coded a webmail client in PHP (re-written from Perl), available at: http://nocc.sourceforge.net/ It's very fast when PHP is loaded as a module with Apache (3 seconds to display a mailbox list from POP3 or IMAP server) but the CGI version takes around 2 or 3 minutes to display anything. Even when disabling the default mailbox sorting feature, it takes very long, but at least it won't fail with Windows 2k+Apache+PHP cgi with the 30 seconds max. exceeded. I know this is a light bug report but I really wonder why it's so slow, every other cgi with the same php binary is very fast and the same webmail client coded with Perl is much faster than the PHP equivalent whereas, generally speaking, for my experience, my PHP scripts are faster than my other scripts written in Perl, sh, etc. (except C :). The accessed mail servers are local and I tried NetBSD, Linux, Windows 2000. I use the latest PHP from snaps.php.net or php4win.de See http://www.epita.fr:8000/~cahagn_o/php/info.php I've been using PHP for years now, debugging it a bit (the binary is 2MB large on the NetBSD box) but this performance problem is weird. Thanks for any enlightenment. I hope you won't close this bug report for bad php coding reason, I really think there's a specific performance problem with CGI and IMAP, perhaps the IMAP library that keeps on being reloaded ? ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=7848&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]