Ver Mensaje Individual
  #8 (permalink)  
Antiguo 08/05/2009, 18:12
franco190453
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 1 mes
Puntos: 33
Respuesta: Funcion exec()

Este codigo lo utilizo para un cron desde mi pagina web.

<?php
$abrirsocket = fsockopen($_SERVER['HTTP_HOST'],80,$errorno,$errorstr,10);
if($abrirsocket) {
$datossocket = "GET /converter.php HTTP 1.1\r\n";
$datossocket .= "Host: ".$_SERVER['HTTP_HOST']."\r\n";
$datossocket .= "Connection: Close\r\n\r\n";
fwrite($abrirsocket,$datossocket);
fclose($abrirsocket);
} else {
echo "Hubo Error";
}
?>

(Esto se llama CRON sin programa cron ni CLI).
Este socket se abre y de inmediato se cierra y el archivo converter.php
queda corriendo aun cuando cerremos el navegador.

Para probarlo puedes utilzar algo asi ->

(cron.php)
$tiempos = 14;
$mimanejo = 7;
for($w = 0; $w < $tiempos; $w++) {
sleep(2);
$prueba = fopen("$mimanejo.txt","w+");
fclose($prueba);
$mimanejo++;
$final = fopen("controldos.txt", "w+");
if(!$final) { exit(); }
fwrite($final, "$mimanejo");
fclose($final);
include("mail.php");
}

(mail.php)
<?php
$email = "[email protected]";
$asunto = "Esto Es Una Prueba";
$mensaje = "Estamos probando este novedoso sistema cron de franco!!!.";
mail($email, $asunto, $mensaje);
?>

El archivo cron.php deberia sustituir a converter.php.
Esto lo que hace es crear catorce archivos de texto 7.txt, 8.txt,
etc y envia 14 correos a las direccion que ustedes pongan en
cerca de 30 segundos, segun los sleep().

La utilizacion es abrir el socket, incluir cron.php y cerrar el socket
y el archivo queda correindo. la unica forma de pararlo es apagando el apache o
buscando el proceso iniciado y matarlo con un taskkill para windows.

Esta limitado por max_exec_time, que si l ponemos ha cero (0)
podemos mantener ejecutando el archivo por dias si es necesario.

Esto es un bug de los sockets de php pero para mi es una ventaja
violenta sobre los demas sistemas de programacion. No hay duda que
php es lo mejor

Saludos
Franco