[SOLUCIONADO] Ejecutar Código cada cierto tiempo

Iniciado por Oggy, Noviembre 30, 2012, 02:15:36 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 30, 2012, 02:15:36 PM Ultima modificación: Julio 14, 2014, 12:36:45 AM por Expermicid
Saludos compañeros.

Alguno tendra Alguna forma,función etc..., En php la cual permita Ejecutar un Bloque De código en un Tiempo predefinido?

Ejemplo: Ejecuta Esto Cada 5 minutos, Ejecuta esto Cada 10 Segundos etc.

De antemano Gracias si estas intentando Responder mi Duda.

uhm, a ver si te entiendo, quieres que un código php se ejecute y cada cierto tiempo realize algo? como si fuera un timmer en visual basic?

o quieres que un código php se ejecute cada cierto tiempo? (me refiero al archivo entero)

y como vas a ejecutar el código, como consola o como cliente/servidor?

saludos!

Lo ejecutaré por Cliente/servidor.

El proposito Seria que si digamos an pasado 5 minutos ó el tiempo que Sea ejecute algo.

Un ciclo while ó for no me sirven porque ejecutarian el código hasta que la condición Se cumpla.
Estoy Manejando un código que Hoy cree, Hace una petición a una página web con curl, pero me Bota si escribo 5 ó 3 Datos/mensajes  De seguido, poreso Solo quiero que Envie 1 Mensaje Cada Cierto tiempo.

Para eso necesitas ajax

funcion tiempo <--- calculas el tiempo
funcion ajax <.-- motor de ajax
funcion php <--- lo que quieres que aga php

yamas funcion tiempo despues yamas a ajax y ajax  que ara el trabajo sucio por ti

PD: no se necesita ningun bucle....

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Para eso necesitas ajax

funcion tiempo <--- calculas el tiempo
funcion ajax <.-- motor de ajax
funcion php <--- lo que quieres que aga php

yamas funcion tiempo despues yamas a ajax y ajax  que ara el trabajo sucio por ti

PD: no se necesita ningun bucle....

si es una buena idea, tendrías que mantener la ventana del navegador abierta y hacer que pase un rato y enviar la petición al php para que haga la consulta cURL, tiene razón.

saludos!

Lo solucione Ejecutando un window.location Cuando La Clase Date getSeconds sea igual X numero de segundos.
No me gusto el Resultado, pero era lo que buscaba.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Lo solucione Ejecutando un window.location Cuando La Clase Date getSeconds sea igual X numero de segundos.
No me gusto el Resultado, pero era lo que buscaba.

la idea es prácticamente la misma, solo que en vez de redirección, podrías hacer una petición por ajax. eso por lo que entendí es lo que propone heyctre, si te fijas, smf para enviar mails masivos, envia cierta cantidad y luego pone una redirección luego de x segundos para continuar enviando mails y asi no saturar el servidodr de SMTP

saludos!

amigo te estas asiendo un ataque DDOS tu solo   :o

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
amigo te estas asiendo un ataque DDOS tu solo   :o

en todo caso sería un DOS controlado, pero entonces explica mejor lo que tu dices, porque no te comprendí yo por lo menos.

saludos!

Bueno ya me imagino como es el source, si ocupas Javascript.

El codigo PHP se ejecuta, al final queda javascript ejecutandose para verificar el tiempo de la proxima ejecucion. Cuando llegue el tiempo, entonce redirecciona de nuevo el codigo PHP.

En realidad no te estas haciendo un auto-dos al servidor sino al cliente y un codigo tan pequenio como ese, la verdad no afecta mucho.

Dos controlado o no, es una muy mala practica y es algo que no es recomendable hacer o por lo menos un programador decente no haria tal cosa.

Saludos y para estos caso, lo mejor es ocupar Cron o algun software similar.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Código: php
<script language="javascript">

window.location = "pagina.php"

var datito = new Date();

var pepito = datito.getSeconds();

if (pepito == 40)
{

   //Aquí mi Código en php

}
else
{

//Si returna Salse si no es 40 asme X cosa

}

</script>

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Bueno ya me imagino como es el source, si ocupas Javascript.

El codigo PHP se ejecuta, al final queda javascript ejecutandose para verificar el tiempo de la proxima ejecucion. Cuando llegue el tiempo, entonce redirecciona de nuevo el codigo PHP.

En realidad no te estas haciendo un auto-dos al servidor sino al cliente y un codigo tan pequenio como ese, la verdad no afecta mucho.

Dos controlado o no, es una muy mala practica y es algo que no es recomendable hacer o por lo menos un programador decente no haria tal cosa.

Saludos y para estos caso, lo mejor es ocupar Cron o algun software similar.

obviamente no es una buena practica, de todos modos podrías dejar un link de un ejemplo de algo parecido así oggy se guía un poco en lo que quieres mostrar.

yo no se nada al respecto de cron, nunca lo utilicé.

saludos!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Normalmente en los servicios de hosting esta incluido, hasta en los gratuitos como 000webhost.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Noviembre 30, 2012, 11:45:22 PM #13 Ultima modificación: Diciembre 01, 2012, 12:12:54 AM por heyctre
Si lo que quieres es que se muestre algun texto pequeño, se puede aser con  la funcion
setTimeout  o setInterval de javascript en caso que quieras ejecutar codigo php necesitas AJAX

aca te dejo un ejemplo como lo arias con puro javascript si quieres que lo aga con ajax dime

Código: php
<!DOCTYPE html>

<html>
<head>
<script type="text/javascript">
var i=0;
var array = new Array(3)
array[0]= "mensaje cero";
array[1]= "mensaje uno";
array[2]= "mensaje dos";
array[3]= "mensaje tres";

function hola(){

if(i<=2){i++;}else{i=0;}
document.getElementById("yo").innerHTML=array[i];

}
</script>
</head>
<body>

<div id="yo"></div>

<script type="text/javascript">
setInterval("hola()",1000);
</script>

</body>
</html>

Diciembre 01, 2012, 12:36:31 AM #14 Ultima modificación: Diciembre 01, 2012, 12:41:47 AM por heyctre
y aca esta con AJAX

el tiempo se mide en milesegundos que mil equivale a un segundo

creas un archivo que se llame pagina.php y le metes lo que quieres que php aga, en este caso muestra la hora
los headers son obligatorios para que no se almacene en el cache

Código: php
<?php

header ("Expires: Thu, 27 Mar 1980 23:59:00 GMT"); //la pagina expira en una fecha pasada
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
header ("Pragma: no-cache");


/*
tu codigo php en este caso solo muestra lahora
*/
echo date("Y-n-j H:i:s");
?>


despues el ajax

setInterval ase que se repita el codigo muchas veces
setTimeout ase que se ejecute solo una ves
si quieres poner un mensaje de cargando puedes descomentar la linea

Código: php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>titulo</title>
<script type="text/javascript">
function caca()
{
var algo;
if (window.XMLHttpRequest)
  {
  algo=new XMLHttpRequest();
  }
else
  {
  algo=new ActiveXObject("Microsoft.XMLHTTP");
  }
algo.onreadystatechange=function()
  {
  if (algo.readyState==4 && algo.status==200)
    {
    document.getElementById("caca").innerHTML=algo.responseText;
    }else{
//porsi quieres poner un mensaje de cargando
//document.getElementById("caca").innerHTML="cargando...";
}
  }
algo.open("GET","pagina.php",true);
algo.send();
}




</script>
</head>
<style type="text/css">
#caca{background-color:#CCC;
margin:0px auto;
width:500px;
padding:10px 10px 10px 10px;
cursor:pointer;
}
</style>
<body>
<script type="text/javascript">
setInterval("caca()",2000);
</script>
<div id='caca'></div>

</body>
</html>

Gracias por tomarte El tiempo de responder men, Lo probaré haber que tal.

Igualmente Gracias por Los consejos & orientaciones de yoya.