Отправка электронной почты SMTP блокирует HTTP-запрос
У меня есть программа опроса (limesurvey), запущенная на моем сервере (Apache), и электронная почта SMTP установлена на разных серверах. Я хочу отправить приглашение по электронной почте группе людей (около 10.000). Каждый раз, когда я отправляю группу электронных писем (20-500 электронных писем) из программы опроса (используя электронную почту smtp), в течение этого "времени отправки" все запросы страниц к программе опроса блокируются. После того, как он закончит отправлять электронные письма, люди смогут снова увидеть запрошенную страницу.
Мне интересно, является ли это проблемой из-за программы, которую я использую, или это проблема с настройками на моем SMTP-сервере электронной почты или, возможно, с настройками на моем сервере Apache?. Кто-нибудь сталкивался с той же проблемой и есть ли решение для нее?
1 ответ
Почти наверняка вы используете стандартную файловую сессию. Пока ваш скрипт отправки почты работает, он сохраняет файл сеанса заблокированным, а это означает, что любые другие параллельные запросы к любым другим скриптам с включенным сеансом, использующим этот конкретный идентификатор сеанса, будут заблокированы.
Вам нужно снять блокировку сеанса, добавив в session_write_close()
вызывать в соответствующих местах (например, перед любыми длительными разделами кода / скриптами). Это снимет блокировку и позволит продолжить выполнение других параллельных запросов.