Để giải quyết vấn đề này bằng cách như vậy:
1.You có thể giới hạn không của kết quả trả về bằng cách giảm không dữ liệu bằng cách sử dụng các thông điệp từ tiêu chí 2. truy xuất vài trở cuối cùng e.g 15
$this->msgCounts = imap_search($imap_resource, 'SUBJECT "hello dolly" SINCE "8 April 2003"', SE_UID);
Và sau đó ở đây là một ví dụ để truy xuất cuối cùng 15 trở lại và sau đó chuyển về phía trước và lạc hậu để xem thêm kết quả hoặc older.Note này giả sử bạn có một nút chuyển tiếp trở lên mà đặt $ _GET biến.
$this->msgCounts = $messageCounts;
$multiarray=[];
\Session::put('totalmsg',$this->msgCounts); //Sav etotal no of message in folder to session to determine if to allow next or previous
if($this->msgCounts > 15) //MESSAGES IS MORE THAN WE NEED GET 20
{
$offcut = 15; //default offcut
/**
* Viewing previous or next messages
**/
if(isset($_GET['msgs']) && $_GET['msgs'] == 'older')
{
$this->msgCounts = \Cache::has('msgpointer') ? \Cache::get('msgpointer') : $this->msgCounts;
$msgOffset = $this->msgCounts - $offcut; //get +15 messages
if($offcut > $msgOffset) {
$msgOffset = $msgOffset + 5; //if less than 15 get 10
$offcut = 10;
}
if($offcut > $msgOffset) {
$msgOffset = $msgOffset + 5; //if less than 10 get 5
$offcut = 5;
}
if($offcut > $msgOffset) {
$msgOffset = $msgOffset + 3; //if less than 3 get 2
$offcut = 2;
}
if($offcut > $msgOffset) {
$msgOffset = $msgOffset + 2; //if less than 2 get 1
$offcut = 1;
}
\Cache::put('msgpointer',$msgOffset,60 * 60 * 24);
}
if(isset($_GET['msgs']) && $_GET['msgs'] == 'newest')
{
$this->msgCounts = \Cache::has('msgpointer') ? \Cache::get('msgpointer') : $this->msgCounts;
$msgOffset = $this->msgCounts + $offcut; //get +15 messages
if($msgOffset > $messageCounts) {
$msgOffset = $msgOffset - 5; //if not up to 15 get 10
$offcut = 10;
}
if($msgOffset > $messageCounts) {
$msgOffset = $msgOffset - 5; //if not up to 10 get 5
$offcut = 5;
}
if($msgOffset > $messageCounts) {
$msgOffset = $msgOffset - 3; //if not up to 5 get 2
$offcut = 2;
}
if($msgOffset > $messageCounts) {
$msgOffset = $msgOffset - 2; //if not up to 2 get 1
$offcut = 1;
}
\Cache::put('msgpointer',$msgOffset,60 * 60 * 24);
}
// LOOP THROUGH LAST 20 MESSAGES IF THERE MORE THAN 10 MESSAGES
for ($i = $this->msgCounts; $i > $this->msgCounts - $offcut; $i--)
{
$header = imap_header($this->conn,$i); //GET HEADER INFO USING IMAP FUNCTION
$uid = imap_uid($this->conn,$i); //GET UNIQUE MESSAGE ID FOR READING MESSAGE LATER
//SAVE ALL MESSAGE INFO IN ARRAY
$tobox = $header->reply_to[0]->mailbox ? $header->reply_to[0]->mailbox : 'noreply';
$tohost = $header->reply_to[0]->mailbox ? $header->reply_to[0]->host : 'email.com';
$toaddress = $tobox.'@'.$tohost;
$mailbox = isset($header->from[0]->mailbox) ? $header->from[0]->mailbox : 'no-reply';
$host = isset($header->from[0]->host) ? $header->from[0]->host : 'email.com';
$fromaddress = $mailbox.'@'.$host;
$array = ['toaddress' => isset($header->toaddress) ? $header->toaddress : isset($header->to) ? $header->to[0]->mailbox.'@'.$header->to[0]->host : $toaddress,'date' => isset($header->date) ? $header->date : date('Y-m-d'),'subject' => isset($header->subject) ? $header->subject : "no subject" ,'from' => isset($header->from[0]->personal) ? $header->from[0]->personal :$fromaddress,'unseen' => isset($header->Unseen) ? $header->Unseen : 'S', 'uid' => isset($uid) ? $uid : $i,'fromemail' => $fromaddress];
//PASS A MESSAGE INFO INTO A MULTI ARRAY
$multiarray[] = $array;
}
Bạn có thể thiết lập ngày nó nhận được từ là 90 ngày trước khi sau đó nếu một mình lot.return nó đoạn bởi đoạn như lời xin lỗi above.My cho việc sử dụng một số lớp laravel helper đó, tất cả được cũng nhận xét ra. Hy vọng điều này sẽ giúp ai đó!
Nguồn
2015-08-27 18:10:18
Điều đó sẽ thu hẹp tìm kiếm, nhưng điều đó có hạn chế số lượng thư cần trả lại không? –
@Anthony: đây là cách duy nhất để thu hẹp nội dung một chút không có cách nào khác theo như tôi biết. Có cái nào không? – Sarfraz
Để thu hẹp nó xuống, đó là cách duy nhất. Nhưng tiêu chí của anh ta là một số giới hạn, những gì tôi giả định là, * tất cả * tin nhắn, mà 'imap_search' không cung cấp. Có thể có một hack, xem chỉnh sửa của tôi và cho tôi biết những gì bạn nghĩ. –