Red de conocimiento informático - Aprendizaje de programación - Cómo implementar una cola para envío de mensajes de texto con PHP+MYSQL

Cómo implementar una cola para envío de mensajes de texto con PHP+MYSQL

Recientemente, encontré la necesidad de enviar mensajes de texto en lotes. La interfaz de mensajes de texto la proporciona un tercero. Al principio pensé, después de obtener el número de teléfono móvil, ¿no sería posible enviarlo llamando a la interfaz en bucle?

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

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.