Я пытаюсь создать надежную почтовую систему, которая вызывает у меня некоторые проблемы и, как правило, не очень надежна.Использование cURL для большого запроса
В настоящее время у меня есть выделенный сервер, в котором есть пара настроек скриптов php для добавления писем, отправляемых в MySQL db с использованием PEAR mail_queue, а другой для отправки их с использованием PEAR и задания cron. Все это хорошо работает.
Бит, с которым я борюсь, заполняет базу данных, не опуская сайт, на который отправляются информационные бюллетени.
Информационный бюллетень настраивается и отправляется с панели администратора на бэкэнд сайта, хранящейся на общем сервере. Когда нажата кнопка отправки бюллетеня, она отправляет запрос cURL на выделенный сервер, чтобы заполнить db. Однако при отправке информационного бюллетеня с более 600 подписчиками весь сайт останавливается, и он не возвращается, пока процесс не завершится - что он, по крайней мере, сделает.
Как настроить cURL или другой запрос, который может выполняться в фоновом режиме или асинхронно или независимо от того, что не убивает сайт?
Вот код:
$hCurl = curl_init();
$curl_options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_URL => "http://DOMAIN/PATH/SCRIPT", CURLOPT_POSTFIELDS => "VARIABLE TO SEND");
curl_setopt_array($hCurl, $curl_options);
$sResp = curl_exec($hCurl);
curl_close($hCurl);
скрипт это работает добавляет абонентов к mail_queue после проверки они действительные электронные письма и возвращает статус и недопустимые сообщения электронной почты. Я предполагаю, что добавление 600+ писем в MySQL db - это большая работа для этого.
Любая помощь была бы принята с благодарностью.
Этот запрос cURL должен запускать удаленный скрипт, который по очереди отправляет письма? Функции cURL в любом случае сами не могут инициировать фоновый процесс. Возможно, вам повезло с чем-то вроде 'exec (« nohup curl http: // www/& »)' для запуска автономного бокового задания. – mario
спасибо за ответ. запрос cURL должен заполнить db почтой для отправки - электронные письма затем отправляются через интервалы с помощью задания cron, чтобы уменьшить нагрузку на SMTP-сервер, что было одной из проблем. Мне нужно взглянуть на exec(), чтобы узнать, поможет ли это фоновому процессу. – andyface