Cómo implementar una cola para envío de mensajes de texto con PHP+MYSQL
Pero pronto descubrí el problema: cuando la cantidad de mensajes de texto es grande, no solo lleva mucho tiempo, sino que además la tasa de éxito es muy baja.
Así que pensé en usar PHP y MySQL para implementar una cola de mensajes y enviar mensajes de texto uno por uno. El siguiente es el método de implementación específico:
Primero, cree una tabla de datos sms que contenga los siguientes campos:
id,
teléfono, //Teléfono móvil número p>
contenido //Contenido SMS
Los mensajes de texto inteligentes y los números de teléfono móvil que deben enviarse se colocan en la tabla de SMS.
A continuación, necesitas implementar un temporizador en PHP para leer registros y enviar mensajes de texto:
$db = new Db( );
$sms = new Sms();
while(true){
$item = $db ->getFirstRecord() //obtiene el primero registro de la hoja de datos
if(!$item){
//Finalizar el cronómetro si no hay datos en la cola
break;
}
$res = $sms ->send($item['phone'],$item['content']); //Enviar SMS
if ($ res){
$db->deleteFristRecord(); //eliminar el registro que se envió exitosamente
echo $item['phone'].Enviado exitosamente' ;
}else{
echo $item['teléfono']. No se pudo enviar, inténtalo de nuevo más tarde';
}
dormir (10); // Bucle cada diez segundos
}
echo '¡Envío completo!'
Guarde el código como timer_sms.php, abra el línea de comando y ejecute el temporizador:
php timer_sms.php
Bien, el temporizador php completará automáticamente el envío de acuerdo con el intervalo de tiempo establecido (aquí establecido en 10 segundos) Tareas de SMS . Una vez completada la tarea, saldrá automáticamente del temporizador y ya no ocupará recursos del servidor.
Según mis pruebas, los temporizadores de PHP no consumen muchos recursos ni suponen una carga para el servidor. Además, es un acceso asincrónico a la base de datos y no afectará el funcionamiento de la base de datos.
Las ventajas de este método son:
1. Ejecutar en segundo plano, no es necesario esperar en el frontend.
2 La tasa de éxito es alta. y los registros fallidos se reiniciarán automáticamente. Enviar hasta que se realice correctamente
3.