самый простой вариант сохранять время отправки в сессии и проверять перед отправкой
if (time() - $_SESSION['last_sms_send'] > 100) {
send();
$_SESSION['last_sms_send'] = time();
}
но злоумышленник может удалить сессионную куку в итоге запустится новая сессия и лимит не будет учитываться.
поэтому нужно сохранять время отправки и ип.
например в редис
$redis->set('sms_send_' . $_SERVER['REMOTE_ADDR'], time());
и аналогично первому варианту проверять.
конечно кому сильно надо - возьмут прокси и обойдут такую защиту, но тут вы вряд ли что-то придумаете.