Después de que Harvey Hardware Network cambiara a una nueva plataforma de lanzamiento de noticias la semana pasada, debido a necesidades temporales, la plataforma de noticias original no se detuvo por completo. Por lo tanto, después de que la nueva plataforma comenzó a usarse, se descubrió un dolor de cabeza en la página de inicio. siempre se actualiza al contenido original del sistema, lo que eventualmente provoca que no se pueda acceder normalmente a un determinado enlace de noticias. El nuevo sistema ha optimizado la URL y la URL de la página de noticias es diferente a la del sistema original. Al principio, pensé que era porque alguien todavía estaba usando el sistema anterior, pero la situación persistió al día siguiente, así que pensé que podría ser un problema con el sistema anterior. Más tarde, verifiqué y descubrí que el sistema Empire CMS tenía. una tarea predeterminada de actualizar la página de inicio, así que la cancelé. Después de eso, la página de inicio del sitio web se actualizará normalmente.
Después de resolver este problema, me interesé en las tareas de PHP. Había aprendido sobre ellas antes, pero realmente no las había practicado. Quizás considerando la importancia de esta función para el desarrollo de sistemas de sitios web, decidí estudiarla ahora y escribir un conjunto de ellas. Código maduro para futuras aplicaciones.
La primera es buscar información relevante en línea. Al leer esta información, sé que las tareas de PHP se pueden dividir aproximadamente en tres categorías.
Tareas programadas del servidor
El servidor WIN puede usar directamente tareas programadas para ejecutar aplicaciones relacionadas, y el servidor Linux se puede implementar agregando tareas programadas en /etc/crontab.
Ejecución automática de tareas mediante bucle infinito.
Cree una página de archivo de programa y use ignore_user_abort para configurarla para que sea ejecutable después de cerrar la página del navegador. Luego, después de ejecutar la página del programa, el plan de tareas que necesita siempre se ejecutará automáticamente. Para los programadores PHP comunes, si no tienen la suficiente confianza, esta operación no está permitida, porque un bucle infinito puede causar fácilmente que el servidor falle.
Tareas programadas activadas
Entre los diversos programas que conozco, como Discuz, Empire CMS, etc., todos utilizan este método para completar las tareas programadas del sistema. En comparación con los dos métodos anteriores, este es el más seguro y sencillo.
Hay tantas opciones, por lo que al diseñar un programa, debe elegir la forma más adecuada de programar según las necesidades reales. Hagamos una introducción usando ejemplos.
La revista electrónica AiLiterature.com se produjo poco después del lanzamiento del sitio web. Esta es una revista electrónica enviada por correo electrónico. Enviar el último número de la revista electrónica a los buzones de correo de los suscriptores es una tarea enorme, simplemente por lotes. El envío de páginas obviamente no funciona. La razón principal es que actualmente no existe un servidor de correo propio, como los buzones proporcionados por News, Tencent y 163. Aunque admiten SMTP para enviar correos electrónicos, no permiten el envío de grandes lotes de correos electrónicos. Las condiciones son limitadas. por lo que solo se puede resolver a través de programas.
En primer lugar, elegí una tarea programada activada. Para evitar que el programa que envía correos electrónicos afecte la experiencia del usuario al visitar el sitio web, principalmente la velocidad de apertura de la página del sitio web, elegí usar Ajax para implementar el activador. Agregue una función de activación al archivo JS público y los usuarios podrán activar la tarea de envío de correo electrónico cuando visiten cualquier página.
Para limitar la frecuencia de envío de correos electrónicos y evitar que el servidor de correo los prohíba debido al envío excesivamente frecuente de correos electrónicos, también se establecen límites de tiempo en el programa. RAND se utiliza para generar aleatoriamente un tiempo de espera para resolver el problema. El envío de correos electrónicos no es un intervalo fijo. De hecho, el intervalo en el modo de activación es El tiempo es intrínsecamente incierto, pero cuando el sitio web tiene una gran cantidad de visitas, estos problemas aún pueden ocurrir, por lo que es más seguro agregar configuraciones en este. respecto.
A pesar de las medidas anteriores, en las aplicaciones reales todavía se encuentra que el servidor de correo tendrá prohibido enviar correos electrónicos, pero no está prohibido permanentemente. La forma de resolver este problema es crear una matriz para guardar los parámetros SMTP de diferentes servicios de correo. Cuando un servidor de correo no puede enviar correo normalmente, saltará automáticamente a otro servidor de correo.
En la lista de direcciones de correo electrónico recopiladas, habrá algunas direcciones no válidas. Durante el proceso de envío de correos electrónicos, si el envío falla una vez, cambie a otro servidor de correo electrónico y envíelo nuevamente. Si ninguno de los dos tiene éxito, configure esta dirección de correo electrónico como Si no es válida. , no se enviarán más correos electrónicos a esta dirección en el futuro, lo que mejorará la eficiencia de la lista de direcciones de correo electrónico y ahorrará tiempo para enviar correos electrónicos la próxima vez.
Algunos amigos dicen que soy demasiado tacaño y comparto muy poco código en este tipo de blog. De hecho, cuando buscamos información en Internet, encontramos que los códigos compartidos por muchos sitios web no son necesariamente prácticos y, a veces, lo somos. Se retrasa debido a que me refiero a estos códigos durante mucho tiempo, por lo que al resumir, a menudo resumo los métodos para resolver el problema y escribo los parámetros técnicos clave para poder tener información de referencia cuando encuentre problemas similares en el futuro. Si tienes alguna duda al respecto, puedes contactar conmigo vía mensaje o correo electrónico.
El espacio personal del autor Happy Boy