У меня есть SMS API, который позволяет отправлять текстовые сообщения. Я хочу использовать его для отправки смс оптом.
Пользователь может ввести до 30 000 номеров одновременно и отправлять SMS. То, что я использую, может быть очень плохим подходом:
foreach ($targets as $target) {
sendSms($target,$text,$extra_parms):
}
Для обработки 10 000 запросов (SMS) требуется 10 минут, и это слишком много. Я хочу, чтобы пользователь нажимал кнопку «Отправить» и получал следующее сообщение:
«Ваши SMS были добавлены в очередь для отправки»
И все смс должны быть отправлены в фоновом режиме. Как я могу это сделать?
Спасибо за помощь.
Следуйте ниже Процесс:
Обратите внимание: обычный запрос CURL использует синхронный режим и ожидает ответа, который вызывает задержку.
Создайте очередь, т. Е. В базе данных, и поместите туда все свои SMS-действия. Создайте отдельный скрипт, который будет отправлять SMS-сообщения (в пакетном режиме, как угодно) и периодически запускать его (т. Е. С помощью Curl) для обработки вашей очереди.
Вот что я использую:
function fast_post($url,$data){
ignore_user_abort(true);
$ch = curl_init();
$defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 1,
CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($ch, $defaults);
curl_exec($ch);
curl_close($ch);
}
Обратите внимание, что в этой функции $ data является массивом.