PHP mail () функция вызывает медленную загрузку страницы - PullRequest
0 голосов
/ 22 августа 2011

Я написал несколько страниц PHP, которые связаны с использованием mail ().По большей части это работает хорошо.Однако иногда (я бы сказал, что в 10-20% случаев) функция mail () заставляет страницу загружаться исключительно медленно, если она вообще появляется.

Мне не удалось найти подобную проблему на форумах.Напомним, что функция mail () работает нормально и отправляет почту, но при вызове сценариев с функцией mail () это иногда приводит к медленному времени загрузки страницы.выглядит как.И для справки, мы используем Microsoft Exchange Server 2007.

<html>
  <head>
    <?php
      if ($_POST['submit'] == 'submit'){
        //execute some php code.
        mail($to, $subj, $body, $headers, "O DeliveryMode=b");
      }
      ?>
        <meta http-equiv="refresh" content="0">
      <?php
    }
  </head>

  <body>
    <form action=<?php echo $_SERVER['PHP-SELF']?>>
      <!--Form Data-->
      <input type='submit' name='submit' value='submit'/>
    </form>
  </body>
</html>

Ответы [ 2 ]

0 голосов
/ 22 августа 2011

Как указывает johndavidjohn, медлительность вызвана связью с почтовым сервером. Страница не будет загружена до тех пор, пока письмо не будет отправлено и соединение не будет закрыто.

Я бы предложил сохранить сообщение в базе данных, а затем использовать cronjob, чтобы извлечь сообщение из базы данных и отправить электронное письмо. Это разгрузит работу по отправке электронной почты в фоновый процесс.

Если вы не можете запустить cronjob, вы можете получить лучшее время ответа, используя службу доставки почты, такую ​​как Почтовая марка , Sendgrid или Amazon SES .

0 голосов
/ 22 августа 2011

Есть несколько вариантов сделать это: использовать ajax или поместить emais в очередь и запустить cron, чтобы запустить скрипт для их асинхронной отправки.

...