Ho una pagina con i clienti e con ajax sto caricando informazioni sul fatto che ci inviino un'email o meno.Esegui imap_close non funzionante
codice simile a questo:
$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
}
Ma ci sono circa 20-30 clienti in un'unica pagina, in modo che il proccess prende a volte circa 10-20 secondi per mostrare e sono stato in grado di ottimizzare il processo.
Ma quando il client tenta di ricaricare una pagina, è ancora in attesa prima che imap_search
termini, quindi quando ricaricarlo potrebbe richiedere 20 secondi prima che la pagina venga effettivamente ricaricata.
ho cercato di interrompere la ajax
con beforeunload
funzione e chiudere la imap
ma questo non è funzionante.
Il mio codice:
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;
}
Ma anche se il ajax
viene interrotta e imap_close
è chiamato variabile tenendo imap_open
, ci vuole ancora 10- 20 secondi per ricaricare la pagina, quindi presumo che l'imap non sia stata chiusa.
Come si chiude lo imap
in modo che la pagina possa essere ricaricata immediatamente?
Avete dei registri imap che potete guardare mentre state aggiornando per vedere se sta chiudendo la connessione o no? A questo punto sembra che tu debba lavorare su imap tuning su codice. – mkaatman
Potrebbe esserci un problema di blocco della sessione; – itzmukeshy7