2012-01-30 2 views
0

У меня есть проект, по которому я отправляю электронное письмо с помощью встроенной функции PHP(), я только отправляю по одному электронному письму с небольшим количеством HTML и очень ограниченным CSS (две таблицы и немного CSS в голове для стилизации), но сервер, похоже, делает это очень медленно (настолько, что страница, по которой администратор отправляет сообщение по электронной почте часто отключается)Влияние использования PHP mail()

Так что мой вопрос в том, ; делает ли почта() высокой рабочей нагрузкой на сервере (не уверен, что это правильный термин), или это только то, что сервер, который я использую, является мусором?

Стоит ли мне рассматривать такие проекты, как http://pear.php.net/package/Mail для такого рода вещей?

EDIT:

Вот код в вопросе:

$query = "SELECT email FROM $a_table WHERE id='$Id'"; 
    $result = mysql_query($query) or die("Query failed: ".mysql_error()); 

    $mail_to = mysql_fetch_row($result); 
    $mail_to = $mail_to[0]; 

    // multiple recipients 
    $to = $mail_to; 
    // subject 
    $subject = 'notification'; 

    // message 
    $message = '<html> 
    <head> 
     <title>title goes here</title> 
     <style type="text/css"> 
     table { border: 1px solid #000;} 
     table tr th { background-color: #d8d8d8; border-bottom: 1px solid #000} 
     table tr th, table tr td { padding: 4px; text-align: center; } 
     </style> 
    </head> 
    <body> 
      <h1>header goes here</h1> 
      <table cellspacing="0"> 
      <tr> 
       <th>th1</th><td>'.$var.'</td> 
      </tr> 
      <tr> 
       <th>th2</th><td>'.$var2.'</td> 
      </tr> 
      <tr> 
       <th>th3</th><td>'.$var3.'</td> 
      </tr> 
      </table> 

      <p>&nbsp;</p> 

      <table cellspacing="0"> 
      <tr> 
       <th colspan="13">Key</th> 
      </tr> 
      <tr> 
       <th>G</th> 
       <th>I</th> 
       <th>L</th> 
       <th>M</th> 
       <th>N</th> 
       <th>O</th> 
       <th>Q</th> 
       <th>R</th> 
       <th>S</th> 
       <th>V</th> 
       <th>W</th> 
       <th>C</th> 
       <th>?</th> 
      </tr> 
      <tr> 
       <td>G</td> 
       <td>I</td> 
       <td>L</td> 
       <td>M</td> 
       <td>U</td> 
       <td>O</td> 
       <td>Q</td> 
       <td>R</td> 
       <td>S</td> 
       <td>V</td> 
       <td>W</td> 
       <td>C</td> 
       <td>R</td> 
      </tr> 
     </table> 
    </body> 
    </html> 


    // To send HTML mail, the Content-type header must be set 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 


    // Additional headers 
    $headers .= 'From: admin<[email protected]>' . "\r\n"; // might need to get rid of this soon 

    // Mail it 
    mail($to, $subject, $message, $headers); 
    } 
+2

Не могли бы вы разместить код? Нельзя распространять почту() на тайм-аут страницы, это, вероятно, что-то еще. – Swadq

+0

Всегда полезно использовать чью-то хорошо проверенную работу для чего угодно. Я использую [SwiftMailer] (http://swiftmailer.org/), я вижу, что многие рекомендуют [PHPMailer] (http://phpmailer.worxware.com/), я видел, как несколько человек злоупотребляют PEAR :: Mail, хотя Я не использовал его достаточно, чтобы прокомментировать. Отправка сообщения электронной почты занимает несколько секунд (возможно, менее одного), поэтому, если ваши запросы подсчитывают, что-то еще происходит здесь. Даже плохо настроенный сервер не должен иметь никаких проблем с этим с точки зрения системных ресурсов, это, скорее всего, проблема с сетью или полностью не связана с почтой. – DaveRandom

+0

Что такое PHP Mailer: http://phpmailer.worxware.com –

ответ

1

mail() функция, как правило, очень быстро. Я использовал его в прошлом для массовых систем электронной почты и обрабатывал сотни писем в секунду.

Я бы рекомендовал проверить, как ваша система настроена на отправку электронной почты. mail() обычно использует установку sendmail вашей системы (или постфикс). Вы должны подумать о проверке журналов, чтобы увидеть, есть ли там проблемы.

Смежные вопросы