TigerZF
🌐Español

Capítulo 70. Zend_TimeSync

70.1. Introducción

Zend_TimeSync es capaz de recibir la hora de internet o de red desde un servidor de tiempo usando el protocolo NTP o SNTP. Con Zend_TimeSync, Zend Framework puede actuar de forma independiente respecto a la configuración horaria del servidor donde se ejecuta.

Para ser independiente de la hora real del servidor, Zend_TimeSync trabaja con la diferencia entre la hora real enviada a través de NTP o SNTP y la hora interna del servidor.

[Note] Contexto

Zend_TimeSync no puede cambiar la hora del servidor, pero devolverá una instancia de Zend_Date con la que se puede trabajar la diferencia respecto a la hora del servidor.

70.1.1. ¿Por qué Zend_TimeSync?

Entonces, ¿por qué alguien usaría Zend_TimeSync?

Normalmente, cada servidor dentro de una granja de múltiples servidores tendrá un servicio en ejecución que sincroniza su propia hora con un servidor de tiempo. Así que dentro de un entorno estándar no debería ser necesario usar Zend_TimeSync. Pero puede resultar útil si no hay ningún servicio disponible y si no tiene el derecho de instalar dicho servicio.

Aquí hay algunos ejemplos de casos de uso para los que Zend_TimeSync es perfecto:

  • Servidor sin servicio de hora

    Si su aplicación se ejecuta en un servidor y este servidor no tiene ningún servicio de hora en ejecución, puede tener sentido usar Zend_TimeSync en su aplicación.

  • Servidor de base de datos separado

    Si su base de datos se ejecuta en un servidor diferente y este servidor no está conectado con NTP o SNTP al servidor de la aplicación, podría tener problemas al almacenar y usar datos de marca de tiempo.

  • Múltiples servidores

    Si su aplicación se ejecuta en más de un servidor y las bases horarias de estos servidores no están sincronizadas, puede esperar problemas dentro de su aplicación cuando parte de la aplicación proviene de un servidor y otra parte de otro servidor.

  • Procesamiento por lotes

    Si desea trabajar con un servicio de hora dentro de un archivo por lotes o dentro de una aplicación de línea de comandos, Zend_TimeSync puede ser de utilidad.

Zend_TimeSync puede proporcionar una buena solución en todos estos casos y puede usarse si no puede ejecutar ningún servicio en su servidor.

70.1.2. ¿Qué es NTP?

El Network Time Protocol (NTP) es un protocolo para sincronizar los relojes de múltiples sistemas a través de redes de datos de conmutación de paquetes y latencia variable. NTP usa el puerto UDP 123 como su capa de transporte. Consulte el artículo de wikipedia para más detalles sobre este protocolo.

70.1.3. ¿Qué es SNTP?

El Simple Network Time Protocol (SNTP) es un protocolo que sincroniza los relojes de múltiples sistemas a través de redes de datos de conmutación de paquetes y latencia variable. SNTP usa el puerto UDP 37 como su capa de transporte. Está estrechamente relacionado con el Network Time Protocol, pero es más sencillo.

70.1.4. Uso problemático

Tenga en cuenta que cuando use Zend_TimeSync tendrá que pensar en algunos detalles relacionados con la estructura de la sincronización horaria y con internet en sí. Aquí se describirán el uso correcto y las mejores prácticas. Lea atentamente antes de comenzar a usar Zend_TimeSync.

70.1.5. Decidir qué servidor usar

Debe seleccionar con mucho cuidado el servidor de tiempo que desea usar según los siguientes criterios:

  • Distancia

    La distancia desde su servidor de aplicación hasta el servidor de tiempo. Si su servidor está en Europa, tendría poco sentido seleccionar un servidor de tiempo en Tahití. Seleccione siempre un servidor que no esté lejos. Esto reduce el tiempo de petición y la carga global de la red.

  • Velocidad

    El tiempo que tarda en recibirse la petición también es relevante. Pruebe diferentes servidores para obtener el mejor resultado. Si está solicitando un servidor que nunca es accesible, siempre tendrá un retraso innecesario.

  • División

    No use siempre el mismo servidor. Todos los servidores de tiempo bloquearán las peticiones de servidores que los estén saturando. Si su aplicación requiere un uso intensivo de servidores de tiempo, debería considerar uno de los conjuntos descritos más adelante.

Entonces, ¿dónde puede encontrar un servidor de tiempo? En general, puede usar cualquier servidor de tiempo al que pueda conectarse. Esto puede ser un servidor de tiempo dentro de su LAN o cualquier servidor de tiempo público al que tenga acceso. Si decide usar un servidor de tiempo público, debería considerar usar un conjunto de servidores. Los conjuntos de servidores son direcciones públicas desde las que obtendrá un servidor de tiempo aleatorio y agrupado al solicitar la hora. De esta manera no tendrá que dividir sus peticiones. Hay conjuntos de servidores públicos disponibles para muchas regiones que puede usar para evitar los problemas mencionados anteriormente.

Vea pool.ntp.org para encontrar su conjunto de servidores más cercano. Por ejemplo, si su servidor está ubicado en Alemania, puede conectarse a 0.europe.pool.ntp.org.