Hey,
Onderstaande code gebruik ik om de laatste 20 berichten op te halen van de IMAP server. Aan het begin, toen er nog niet veel e-mails op de server stonden, werkte het allemaal snel en goed, maar naarmate er nu steeds meer e-mails bij komen op de server werkt het geheel gigantisch langzaam (duurt een paar minuten voordat ik iets in beeld krijg).
Nu vraag ik mij af of er een manier is om ook daadwerkelijk alleen de laatste 20 berichten door te lopen in plaats van de totale inbox te doorlopen en de laatste 20 te selecteren (zoals het nu dus gedaan is).
Op internet kan ik geen andere manier vinden dan bovenstaand, alhoewel het mij wel erg stug lijkt dat er geen snellere methode is.
Onderstaande code gebruik ik om de laatste 20 berichten op te halen van de IMAP server. Aan het begin, toen er nog niet veel e-mails op de server stonden, werkte het allemaal snel en goed, maar naarmate er nu steeds meer e-mails bij komen op de server werkt het geheel gigantisch langzaam (duurt een paar minuten voordat ik iets in beeld krijg).
Nu vraag ik mij af of er een manier is om ook daadwerkelijk alleen de laatste 20 berichten door te lopen in plaats van de totale inbox te doorlopen en de laatste 20 te selecteren (zoals het nu dus gedaan is).
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| $mailbox = @imap_open("{domein/imap4}".'inbox',email,wachtwoord); if($mailbox) { $numMsg = imap_num_msg($mailbox); if($numMsg == 0) { echo '<br /><br /><center><strong>Er zijn geen e-mails gevonden in je '.$naamBox.'</strong></center>'; } else { echo '<table id="overzicht">'; echo '<thead> <tr> <th style="width: 120px;">Datum:</th> <th>'.$mailboxAfzender.'</th> <th>Onderwerp</th> </tr> </thead>'; echo '<tbody>'; $msgs = imap_sort( $mailbox, SORTARRIVAL, 1 ); $msgs_length = count($msgs); $max = ($msgs_length < 20) ? $msgs_length : 20; for($i=0;$i<$max;$i++) { $uniqueId = imap_uid($mailbox, $msgs[$i]); $header = imap_header( $mailbox, $msgs[$i] ); echo '<tr id="mail-'.$uniqueId.'"><td>'.date("d-m-Y H:i:s",$header->udate).'</td><td>'; echo ($mailboxId == 2) ? $header->fromaddress : $header->toaddress; echo '</td><td class="subject">'; $elements = imap_mime_header_decode($header->subject); for ($k=0; $k<count($elements); $k++) { echo (strlen($elements[$k]->text) > 50) ? substr($elements[$k]->text, 0, 47) . "..." : $elements[$k]->text; } echo '</td></tr>'; } echo '</tbody>'; echo '</table>'; } imap_close($mailbox); } |
Op internet kan ik geen andere manier vinden dan bovenstaand, alhoewel het mij wel erg stug lijkt dat er geen snellere methode is.