自从我编写了一个完整的 Web 邮件以来,我就大量使用了 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 秒的排序)。