自從我寫了一個完整的網頁郵件程式以來,我一直在使用 IMAP 函式,關於 imap_sort 函式,我有一個小技巧
以下兩者之間有很大的區別
<?php
imap_sort($imap, SORTDATE, 1);
imap_sort($imap, SORTARRIVAL, 1);
?>
第一個指令會發出
>> FETCH 1:last (UID ENVELOPE BODY.PEEK[HEADER.FIELDS (Newsgroups Content-MD5 Content-Disposition Content-Language Content-Location Followup-To References)] INTERNALDATE RFC822.SIZE FLAGS)
而第二個指令會產生
>> FETCH 1:last (UID INTERNALDATE RFC822.SIZE FLAGS)
因此,在一個有 800 封電子郵件的信箱中,使用 SORTDATE 需要多花 3 秒鐘才能完成,而結果幾乎相同(除非您必須處理偽造的日期或時區,但到達順序更合乎邏輯)
如果您要按照郵件到達順序排序,我的建議是使用 SORTARRIVAL,或者更好的方法是不要使用 imap_sort,直接使用訊息編號(而不是 UID)。在大型郵件匣中,如果您逐頁顯示郵件,將會顯著提高效能(避免 5 秒的排序時間)。