I worked a lot with IMAP functions since I wrote a complete webmail and I've got a little tip about the imap_sort function :
There is a big difference between :
<?php
imap_sort($imap, SORTDATE, 1);
// and
imap_sort($imap, SORTARRIVAL, 1);
?>
The first command will issue a
>> 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)
While the second resulted in
>> FETCH 1:last (UID INTERNALDATE RFC822.SIZE FLAGS)
As a result, using SORTDATE took 3 seconds longer to complete on a 800-emails mailbox, while the results are quite the same (except if you have to deal with forged dates or timezones, but the arrival order is far more logical)
My advice if you sort your emails by arrival is to actually use SORTARRIVAL, or better don't use imap_sort and go straight with message numbers (not UIDs). On large mailboxes, if you display messages per page, you will have significant performance increases (by avoiding 5 seconds of sorting).imap_sort
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
imap_sort
Референца за `function.imap-sort.php` со подобрена типографија и навигација.
imap_sort
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_sort — Зема и сортира пораки
= NULL
IMAP\Connection
$imap,int
$criteria,bool
$reverse,int
$flags = 0,?string
$search_criteria = null,?string
$charset = null): array|false
Зема и ги сортира броевите на пораките според дадените параметри.
Параметри
-
imap Еден IMAP\Connection instance.
criteria-
Критериумите може да бидат еден (и само еден) од следниве:
-
SORTDATE- Датум на пораката -
SORTARRIVAL- Датум на пристигнување -
SORTFROM- поштенско сандаче во првата адреса Од -
SORTSUBJECT- Наслов на пораката -
SORTTO- поштенско сандаче во првата адреса До -
SORTCC- поштенско сандаче во првата адреса до копија -
SORTSIZE- големина на пораката во бајти
-
reverse-
Дали да се сортира во обратен редослед.
flags-
На
flagsсе битна маска од едно или повеќе од следниве:-
SE_UID- Врати ги UID наместо секвенцијални броеви -
SE_NOPREFETCH- Не преземај пребарани пораки однапред
-
search_criteria-
IMAP2-формат на критериумите за пребарување. За детали види imap_search().
charset-
MIME множество знаци што треба да се користи при сортирање на низи.
Вратени вредности
Враќа низа од броеви на пораки сортирани според дадените параметри, или false при неуспех.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.1.0 |
На imap параметарот очекува IMAP\Connection
инстанца сега; претходно, валидна imap resource се очекуваше.
|
| 8.0.0 |
reverse сега е bool наместо int.
|
| 8.0.0 |
search_criteria and charset сега се nullable.
|