我的Gmail中有2465封電子郵件,爲什麼下載所有電子郵件後程序無法停止?所有的code1和code2都以命令行模式運行。
代碼1:爲什麼程序在下載完所有電子郵件後無法停止?
<?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";
?>
對於代碼1:
1.可下載的所有電子郵件。
2.在控制檯上輸出2465
3.no over
在控制檯上輸出。
4.程序不能停止,似乎永遠運行。
碼2:
<?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";
?>
對於代碼2:
1.可下載的所有電子郵件。
2.在控制檯上輸出2465。
3.在控制檯上輸出over
。
4.下載完所有電子郵件後程序停止。
代碼2中有一行echo $email_id.PHP_EOL;
多於代碼1,其他代碼相同。
所有的code1和code2都在命令行模式下運行。
誰能解釋一下?
你說它什麼都不做就掛了?只要CPU不是100%,它可能會掛在一些系統調用中,然後嘗試一個「strace」,然後查看最後的系統調用是什麼。 – bwoebi
使用** imap_timeout嘗試設置超時獲取電子郵件** - 您的回聲可能會意外地使第二個腳本超時。 – Jehy
你還能重現錯誤嗎?如果是的話,你在執行腳本時使用了哪些PHP版本以及你在使用什麼shell? – cb0