PHP Mailer, блокирует выполнение всего сервера при отправке электронной почты - PullRequest
1 голос
/ 11 июня 2019

Во-первых, я видел этот вопрос: Отправка почты без блокировки «выполнения»

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

Я на самом деле вызываю почтовый скрипт с помощью вызова Ajax:

 $.ajax({
     url: 'sendMailTemplate.php', 
     type: 'POST',
     data: formData,
     processData: false,
     contentType: false,
     success: function (data) {}
...

Моя проблема с почтовой программой PHP заключается в том, что когда яотправив электронное письмо, если это займет 10 секунд, то в течение 10 секунд я не смогу использовать какую-либо функцию моего сайта (и сайт отключен для всех на 10 секунд).Должен ли я попытаться использовать задания cron?Есть ли какое-нибудь руководство по работе с почтой PHP + cron?Какой лучший способ, кроме работы cron?

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Стоит ли использовать задания cron? Да

Есть ли какое-нибудь руководство по работе с почтой PHP + cron? Я попробовал свою собственную логику, используя несколько ссылок:

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

  1. Рассылка: когда вы нажимаете наотправьте электронное письмо в то время, когда у вас есть все электронные письма в "temp_table" вашей базы данных с их столбцами "to,cc,bcc,suject,body".
  2. Запись задания cron для hrly (вашего времени) basic, которое будет выполняться в определенный промежуток времени.
  3. В сценарии cron вы должны написать код, который будет принимать электронные письма (установить лимит запросов, чтобы не принимать никаких записей) от "temp_tables" и отправлять получателю.После успешной полной отправки удалите эти письма из "temp_table" вашей базы данных.

Что лучше, чем задания cron? У вас есть контакт с вашим поставщиком услуг, чтобы увеличить лимит почтовой рассылки, увеличить скорость вашего сервера, php.ini: изменить время загрузки (эта опция не работает каждый раз), использовать другой язык, например python

0 голосов
/ 11 июня 2019

Просто переключитесь на smtpd , который позволяет помещать письма в очередь и отправлять их асинхронно.

...