私は、顧客がいるページを持っています。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
}
しかし、そこに1ページの20-30顧客は大まかなので、proccessを表示するために、時には約10〜20秒かかり、私はプロセスを最適化することができませんでした。
クライアントがページをリロードしようとすると、imap_search
が終了するまでまだ待機しているので、ページを再読み込みするとページが実際にリロードされるまでに20秒かかることがあります。
beforeunload
で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;
}
しかしajax
が中止され、imap_close
がimap_open
を保持する変数で呼び出されていても、それはまだ取り、10-ページがリロードされるのに20秒かかるので、私はIMAPが閉じられていないと仮定しています。
imap
を閉じるとページがすぐに読み込まれるようにするにはどうすればよいですか?
接続を終了しているかどうかを確認するためにリフレッシュしている間に見ることができるすべてのIMAPログがありますか?現時点では、コードを調整するためにimapを操作する必要があるように感じられます。 – mkaatman
セッションロックの問題がある可能性があります。 – itzmukeshy7