Ci sono 2465 e-mail nella mia gmail, perché il programma non può fermarsi dopo aver scaricato tutte le e-mail? Tutti i codici 1 e 2 sono eseguiti in modalità riga di comando.
code1:perché il programma non può fermarsi dopo aver scaricato tutte le e-mail?
<?php
$mailbox = array(
'mailbox' => '{imap.gmail.com:993/imap/ssl}INBOX',
'username' => '[email protected]',
'password' => 'yyyy'
);
$stream = imap_open($mailbox['mailbox'], $mailbox['username'], $mailbox['password'])
or die('Cannot connect to mailbox: ' . imap_last_error());
$emails = imap_search($stream,"ALL");
$nums=imap_num_msg($stream);
echo $nums;
foreach($emails as $email_id) {
$mime = imap_fetchbody($stream, $email_id, "");
file_put_contents("/tmp/" . "email_{$email_id}.eml", $mime);
}
imap_close($stream);
echo "over";
?>
Per code1:
1.can scaricare tutti i messaggi di posta elettronica.
2. uscita 2465 sulla console
3.no over
output sulla console.
4. il programma non può fermarsi, sembra funzionare per sempre.
Codice2:
<?php
$mailbox = array(
'mailbox' => '{imap.gmail.com:993/imap/ssl}INBOX',
'username' => '[email protected]',
'password' => 'yyyy'
);
$stream = imap_open($mailbox['mailbox'], $mailbox['username'], $mailbox['password'])
or die('Cannot connect to mailbox: ' . imap_last_error());
$emails = imap_search($stream,"ALL");
$nums=imap_num_msg($stream);
echo $nums;
foreach($emails as $email_id) {
echo $email_id.PHP_EOL;
$mime = imap_fetchbody($stream, $email_id, "");
file_put_contents("/tmp/" . "email_{$email_id}.eml", $mime);
}
imap_close($stream);
echo "over";
?>
Per Codice2:
1.can scaricare tutti i messaggi di posta elettronica.
2. uscita 2465 sulla console.
3. over
output sulla console.
4. il programma si ferma dopo aver scaricato tutte le e-mail.
C'è una riga echo $email_id.PHP_EOL;
in code2 più di codice1, altri codici sono uguali.
Tutti i codici 1 e 2 vengono eseguiti in modalità riga di comando.
Chi può spiegarlo?
Hai detto che si blocca senza fare nulla? Finché la CPU non è al 100%, probabilmente si blocca in alcuni syscall, ... prova un 'strace' e poi guarda quali sono gli ultimi syscall. – bwoebi
Prova il timeout delle impostazioni per il recupero dell'e-mail con ** imap_timeout ** - l'eco può accidentalmente rendere questo timeout per il secondo script. – Jehy
È ancora possibile riprodurre l'errore? Se sì, quale versione di php stai usando e quale shell stai usando mentre esegui gli script? – cb0