PHP PEAR Mail ve ALT-N Mdaemon pro ile YAVAŞ toplu e-posta gönderme

0 Cevap php

Biz bizim bülten göndermek istediğiniz büyüyen bir e-posta listesi var. Şu anda günde 1200 civarında gönderiyor, ama bu biraz artacak. Ben bir kuyruktan e-posta göndermek için her yarım saatte bir çalışan bir PHP komut dosyası yazdık. Sorun (örneğin 106 e-postalar göndermek için 74.37 saniyelik toplam aldı) çok yavaş olmasıdır. Ben sürekli önce zamanlama gibi bu karşılamak için 90 saniye için maksimum yürütme süresini artırmak zorunda. Ben sorguları hatalı olmadığını kontrol ettik ve bu kadar uzun sürüyor, özellikle gönderen posta parçası gibi görünüyor.

Ben Mail :: factory ('posta', $ params) ve e-posta sunucusunu kullanarak ediyorum aşağıda görebileceğiniz gibi Windows, başka bir sunucu üzerinde barındırılan için ALT-N Mdaemon yanlısı olduğunu. Ben hiç hotmail veya yahoo adreslere teslim ediliyordu bulundu testleri yaparken de, hatta önemsiz olarak alınıyor değil.

Bu oluyor olabilir neden kimse bir fikir var mı?

    foreach($leads as $k=>$lead){

 $t1->start();

 $job_data = $jobObj->get(array('id'=>$lead['job_id'])); 

 $email = $emailObj->get($job_data['email_id']);


 $message = new Mail_mime();
 //$html = file_get_contents("1032.html");

 //$message->setTXTBody($text);

 $recipient_name = $lead['fname'] . ' ' . $lead['lname'];

 if ($debug){
  $email_address = DEBUG_EXPORT_EMAIL;
 } else {
  $email_address = $lead['email'];
 }
 // Get from job 
 $to   = "$recipient_name <$email_address>";
 //echo $to . " $email_address ".$lead['email']."<br>";

 $message->setHTMLBody($email['content']);

 $options = array();
 $options['head_encoding']  = 'quoted-printable'; 
 $options['text_encoding']  = 'quoted-printable'; 
 $options['html_encoding']  = 'base64'; 
 $options['html_charset']  = 'utf-8'; 
 $options['text_charset']  = 'utf-8'; 

 $body = $message->get($options);

 // Get from email table
 $extraheaders = array(
      "From"  => "Sender <sender@domain.com>", 
      "Subject" => $email['subject']
     );

 $headers = $message->headers($extraheaders);

 $params = array();
 $params["host"]  = "mail.domain.com";
 $params["port"]  = 25;
 $params["auth"]  = false;
 $params["timeout"]  = null;
 $params["debug"]  = true; 

 $smtp = Mail::factory('mail', $params);

 $mail = $smtp->send($to, $headers, $body);



 if (PEAR::isError($mail)) {

    $logObj->insert(array(
   'type'   => 'process_email',
   'message' => 'PEAR Error: '.$mail->getMessage()
   )); 
  $failed++;   
 } else {
  $successful++;
  if (DEBUG) echo("<!-- Message successfully sent! -->");

    // Delete from queue 
    $deleted = $queueObj->deleteById($lead['eq_id']);

    if ($deleted){
     // Add to history
     $history_res = $ehObj->create(array(
        'lead_id' => $lead['lead_id'],
          'job_id' => $lead['job_id']
          )
         );

     if (!$history_res){
    $logObj->insert(array(
     'type'   => 'process_email',
     'message' => 'Error: add to history failed'
     )); 
     }
    } else {
      $logObj->insert(array(
     'type'   => 'process_email',
     'message' => 'Delete from queue failed'
     ));      
    }
 }

 $t1->stop();

}

0 Cevap