Ver Mensaje Individual
  #26 (permalink)  
Antiguo 24/01/2006, 10:51
Avatar de uamistad
uamistad
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
De acuerdo cron jobs no es nada del otro mundo

Si tu tienes un servidor gratuito o si no, no importa.

Más bien checa que tenga CPanel, si tú tienes CPanel para administrar tu cuenta, casi estoy seguro de que una de esas opciones se llama "Cron Jobs".




Con Cron Jobs tú le dices exactamente que ejecute cierto Script cada X tiempo.

¿y si no tienes Cron Jobs o trabajas con Windows?
No importa ! Además no necesitas javascript (si es que entendí lo que deseas hacer).

Mira, podrías hacer una función que se llamara:

Código PHP:
function actualizar_turnos() 
Ahora imagina que esta función se encarga de hacer todo el trabajo que necesitas (para ello quizá quieras que se conecte a una BD, que envíe ciertos emails, etc, etc. Es decir, esa función se ocupará de hacer toda la actualización). Ahora, si la metes al inicio de cada una de tus páginas, ¿qué ocurriría?

Que los turnos no se actualizarán cada X minutos, ni al inicio de cada día, sino cada vez que un usuario cambia de página. Es decir, los usuarios podrían pensar que lo estás haciendo en tiempo real!

Ahora, si crees que esta función que te platico hace su trabajo con demasiada frecuencia, entonces podrías intentar algo como esto, crea un archivo de texto plano en tu server y haz una función que lea ese archivo, reste la hora actual de la que obtuvo en ese archivo y si ha pasado "cierto" tiempo, que actualice, algo así:

Código PHP:
if(verifica_ultimo_tiempo())
     function 
actualizar_turnos(); 
La función actualizar_turnos() sigue haciendo lo que comenté al principio, pero ahora sólo lo hará cuando la función verfica_ultimo_tiempo() lo autorice regresando un 1. Si regresa un 0 (lo que significa que es muy pronto para refrescar), entonces no se actualizarán los turnos.

Asegúrate de que verificar_ultimo_tiempo(), cuando regrese un 1, también reescribe en el archivito de texto plano la nueva hora, es decir, la hora en la que se generó la actualización.


¿Problemas?
Parece que nadie tocó aún los problemas de usar los archivos de texto plano. ¿Qué tal que dos personas ejecutan al mismo tiempo un script y los dos scripts abren desde diferentes sitios el archivo de texto plano y ambos quieren escribir sobre él?

Pues quizá echen a perder el archivo, ya que ahora tendrá datos basura. Para ello utiliza la función flock() que te permite bloquear un archivo para otras aplicaciones cuando tú estás trabajando con él.

Así es como se utiliza:

Código PHP:
 $aa fopen("/tmp/bloqueo.txt""w+");

if (
flock($aaLOCK_EX)) { // realizar un bloqueo exclusivo
    
fwrite($aa"Escribir algo aqui\n");
    
flock($aaLOCK_UN); // liberar el aviso

fclose($aa); 

Última edición por uamistad; 24/01/2006 a las 11:01 Razón: agregando información de flock()