Hi !!
just looking at _list_headers i noticed that deleted headers are also cached, is there any reason for that ?
Also problems related to users having lots of emails in the inbox folder cause big problems, just about 1000 messages in a user inbox causes that the login process lasts forever. If in safe_mode and execution time and memory usage are limited users with big inbox are totally unable to login. Supporting server side message sort will improve performance and would simplify fetching only one page of headers at a time.
Hi David,
Yes, this is due the current caching architecture which stores all headers of a folder in one DB record. If you have thousands of headers, the SQL query will make MySQL hang. This is subject to be redesigned and we already had some good posts from Ivan alias DrSlump.
Regards, Thomas
David Saez Padros wrote:
Hi !!
just looking at _list_headers i noticed that deleted headers are also cached, is there any reason for that ?
Also problems related to users having lots of emails in the inbox folder cause big problems, just about 1000 messages in a user inbox causes that the login process lasts forever. If in safe_mode and execution time and memory usage are limited users with big inbox are totally unable to login. Supporting server side message sort will improve performance and would simplify fetching only one page of headers at a time.
Hi !!
Yes, this is due the current caching architecture which stores all headers of a folder in one DB record. If you have thousands of headers, the SQL query will make MySQL hang. This is subject to be redesigned and we already had some good posts from Ivan alias DrSlump.
just looking at _list_headers i noticed that deleted headers are also cached, is there any reason for that ?
ok, but is there any need to cache also headers which are deleted ? i mean:
if (!is_array($a_msg_headers) || sizeof($a_msg_headers) != $max) { $a_header_index = iil_C_FetchHeaders($this->conn, $mailbox, "1:$max"); $a_msg_headers = array(); foreach ($a_header_index as $i => $headers) $a_msg_headers[$headers->uid] = $headers; }
could be changed to:
foreach ($a_header_index as $i => $headers)
if (!$headers->deleted)
$a_msg_headers[$headers->uid] = $headers;
David Saez Padros wrote:
Hi !!
Yes, this is due the current caching architecture which stores all headers of a folder in one DB record. If you have thousands of headers, the SQL query will make MySQL hang. This is subject to be redesigned and we already had some good posts from Ivan alias DrSlump.
just looking at _list_headers i noticed that deleted headers are also cached, is there any reason for that ?
ok, but is there any need to cache also headers which are deleted ?
No, of course not. This is a mistake and will be changed.
Thomas