【问题标题】:imap_sort limit the number of results?imap_sort 限制结果的数量?
【发布时间】:2011-05-12 03:26:11
【问题描述】:

我正在使用带有 IMAP 的 PHP。我需要从一个文件夹中检索 20 封最新的电子邮件。我使用 imap_sort 按日期排序,但问题是对于包含 700 多封电子邮件的大型文件夹,它需要很长时间。

有没有办法我可以使用 PHP IMAP 按日期对邮件进行排序并只带上最新的 20 封电子邮件?

也许可以使用 imap_search ?

这是我的代码:

$start_from  = params::cleanDefault($_GET, 'start_from', 0);
$limit       = params::cleanDefault($_GET, 'limit', 20);
$sort_by     = params::cleanDefault($_GET, 'sort_by', 'SORTARRIVAL');

$emails = imap_sort($mbox, $sort_by, 1, SE_NOPREFETCH);
$emails = array_slice($emails, $start_from, $limit); 

谢谢。

【问题讨论】:

    标签: php imap email


    【解决方案1】:

    没有直接的方法。

    您已经通过sorting on SORTARRIVAL instead of SORTDATE 最小化了 PHP 的 imap_* 函数底层 c-client 库获取的数据。而且,虽然 an IMAP extension 允许调用者请求 SORT 结果的子集(例如前 20 个命中),但很少有 IMAP 服务器支持它,PHP 无法使用它。

    您可以尝试使用imap_search 并询问自 1 天前到达的消息。如果这还不够,您可以重新搜索自 2 天前到达的消息。等等。但这可能会使代码变得混乱,并且最终可能不会比您已经在做的更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 2010-11-20
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多