我有客戶的頁面和ajax im正在加載他們是否向我們發送電子郵件的信息。執行imap_close不起作用
代碼如下所示:
$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
}
但也有大約20-30個客戶在一個頁面上,所以需要proccess有時約10-20秒,以顯示我是無法優化的過程。
但是,當客戶端嘗試重新加載頁面時,它仍然在等待imap_search
完成之前等待,因此重新加載時可能需要20秒才能重新加載頁面。
我試圖用beforeunload
函數中止ajax
函數並關閉imap
但這不起作用。
我的代碼:
阿賈克斯:
$(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;
}
但即使ajax
被中止,imap_close
被稱爲可變控股imap_open
,它仍然需要10 20秒重新加載頁面,所以我假設imap沒有關閉。
如何關閉imap
以便頁面可以立即重新加載?
您是否有任何imap日誌可以在您刷新時查看它是否關閉連接?它通常覺得你需要在這一點上處理imap調優代碼。 – mkaatman
可能存在會話鎖定的問題; – itzmukeshy7