Tôi có trang với khách hàng và với thông tin tải ajax im về việc họ có gửi email cho chúng tôi hay không.Thực hiện imap_close không hoạt động
Mã trông như thế này:
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'email';
$password = 'password';
$this->session->data['imap_inbox'] = $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
foreach($customers as $customer){
$emails = imap_search($inbox, 'FROM ' . $email);
// Processing info
}
Nhưng có khoảng 20-30 khách hàng trên một trang, vì vậy các proccess mất đôi khi khoảng 10-20 giây để hiển thị và tôi đã không thể tối ưu hóa quá trình này.
Nhưng khi khách hàng cố gắng tải lại trang, nó vẫn đang chờ trước khi kết thúc imap_search
, vì vậy khi tải lại, có thể mất 20 giây trước khi trang thực sự được tải lại.
Tôi đã cố gắng hủy bỏ ajax
với chức năng beforeunload
và đóng imap
nhưng điều này không hoạt động.
Mã của tôi:
Ajax:
$(window).bind('beforeunload',function(){
imap_email.abort(); // the ajax is succesfully aborted(as showed in console), yet the page still takes considerable time to reload
$.ajax({
type: 'GET',
url: 'getimapmails&kill=1',
async:false
}); // ajax call to the same function to call imap_close
});
PHP:
if($this->request->get['kill'] == '1'){
imap_close($this->session->data['imap_inbox']);
unset($this->session->data['imap_inbox']);
$kill == 1;
exit;
}
Nhưng mặc dù ajax
được hủy bỏ và imap_close
được kêu gọi biến giữ imap_open
, nó vẫn còn mất 10 20 giây để trang tải lại, vì vậy tôi giả sử imap không bị đóng.
Làm cách nào để đóng imap
để trang có thể tải lại ngay lập tức?
Bạn có bất kỳ nhật ký imap nào mà bạn có thể xem trong khi bạn đang làm mới để xem nó có đang đóng kết nối hay không? Nó thường cảm thấy như bạn cần phải làm việc trên imap điều chỉnh trên mã tại thời điểm này. – mkaatman
Có thể có sự cố về khóa phiên; – itzmukeshy7