Слишком много времени занимает библиотека phpmailer - PullRequest
0 голосов
/ 10 апреля 2020

Я создаю скрипт для ежедневной отправки 10 файлов разным получателям. Размер этих файлов может быть до 15 МБ. Phpmailer занимает много времени от 10 до 15 минут. так что стало непригодным для меня. Я использую Gmail SMTP.

//Server settings
//$mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
$mail->SMTPDebug = 0; //Alternative to above constant
$mail->isSMTP();                                            // Send using SMTP
$mail->Host       = 'smtp.gmail.com';                    // Set the SMTP server to send through
$mail->SMTPAuth   = true;                                   // Enable SMTP authentication
$mail->Username   = 'rmudelhi@gmail.com';                     // SMTP username
$mail->Password   = 'rainfall2016';                               // SMTP password
//$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
$mail->SMTPSecure= 'tls';
$mail->Port       = 587;   

Может кто-нибудь помочь мне улучшить это?

1 Ответ

0 голосов
/ 10 апреля 2020

Дело не в том, что PHPMailer работает медленно, а в том, что вы пытаетесь выполнить медленную работу во время загрузки страницы; вы переводите около 150 мегабайт на получателя , что никогда не произойдет быстро.

Не отправляйте электронную почту во время загрузки страницы - сохраните тот факт, что вам нужно сделать отправить в вашу базу данных или очередь и обработать отправку асинхронно.

Самый простой способ сделать это - использовать задание cron, чтобы выбрать задачи отправки и запустить их.

В качестве альтернативы, выполните не отправляйте файлы по электронной почте, а отправляйте сообщение, содержащее ссылки, указывающие на них, чтобы получатели могли более эффективно загружать их по HTTP. Электронная почта просто не эффективный способ отправки больших файлов.

...