2010-04-21 50 views
0

我試圖發送類似的新聞信通過使用Zend_Mail但經過12郵件我得到這個消息如何發送新聞信件中的Zend

致命錯誤:用C超過30秒的最長執行時間:\ Program Files文件\ Zend的\ Apache2的\ htdocs中\ forga \庫\ Zend的\郵件\協議\ Abstract.php線321

我的代碼是這樣的:

$smtpHost = 'smtp.gmail.com'; 

$smtpConf = array(
     'auth' => 'login', 
     'ssl' => 'tls', 
     'port' => '587', 
     'username' =>'[email protected]', 
     'password' => 'xxxxxxxx' 
     );  
$transport = new Zend_Mail_Transport_Smtp($smtpHost, $smtpConf); 

foreach($users as $user) 
{ 
    $mail = new Zend_Mail(); 
    $mail->setFrom("[email protected]", 'Forga'); 
    $mail->setSubject($subject); 
    if($html=='on') 
     $mail->setBodyHtml($message); 
    else 
     $mail->setBodyText($message); 
    $mail->addto($user); 
    $transport->send($mail); 
} 

回答

1

從腳本超時你我會假設你的主機發送eMails的速度很慢,並且無法處理eMails的批量發送。你可以增加時間,直到腳本超時與

更優雅的方式將在單獨的進程發送的電子郵件是異步的。通過1Padraic Brady部分,23退房異步處理的

  • 奧祕。

第3部分專門處理eMails。

0

看看我的答案在PHP Multithreading/Parallel Processing in PHP並行處理的另一篇文章。我認爲這是相關的。如果您需要在個別請求之外完成某些操作,則應該將其傳遞給某種隊列。

0

通過您的代碼外觀,您可以從您的服務器單獨發送一封單獨​​的電子郵件。嘗試執行以下操作。

$smtpHost = 'smtp.gmail.com'; 

$smtpConf = array(
     'auth' => 'login', 
     'ssl' => 'tls', 
     'port' => '587', 
     'username' =>'[email protected]', 
     'password' => 'xxxxxxxx' 
     );  
$transport = new Zend_Mail_Transport_Smtp($smtpHost, $smtpConf); 
$mail = new Zend_Mail(); 
$mail->setFrom("[email protected]", 'Forga'); 
$mail->setSubject($subject); 
$html=='on' ?$mail->setBodyHtml($message) : $mail->setBodyText($message); 

foreach($users as $user) 
{ 
    $mail->addto($user); 
} 

$transport->send($mail); 

不,我可能實際上是不對的,因爲其他電子郵件地址可以是可見的所有收件人,林不知道,如果這只是關於電子郵件的部分

Regards