Necesito ejecutar un php que dura más de 60 segundos y para evitar el timeout del navegador lo que hago es establecer una conexión ssh con mi servidor compartido y ejecutar nohup php <nombre fichero.php> &
El codigo es el siguiente :
prueba.php
Código
include('Net/SSH2.php'); $server = "miservidor.es"; $username = "xxx"; $password = "xxx"; $ssh = new Net_SSH2($server); if (!$ssh->login($username, $password)) { } $ssh->exec("nohup php carpetaprueba/prueba/wait.php &");
y el wait.php es el fichero "tocho" que tarda mucho en procesar. De momento le tengo puesto un sleep y simplifico el código de forma que lo pueda hacer funcionar.
Código
<?php print "<p>Comienzo</p>\n"; for ($i = 0; $i < 2; $i++) { print "<p>$i</p>\n"; } print "<p>Final</p>\n"; // El mensaje $mensaje = "Línea 1\r\nLínea 2\r\nLínea 3"; // Si cualquier línea es más larga de 70 caracteres, se debería usar wordwrap() // Enviarlo ?>
cuando ejecuto el prueba.php desde el navegador deja la pantalla en blanco (no hay errores) y no envia el email que es la ultima instrucción que hace el php.
En cambio si cambio el sleep(3) en wait.php si que lo ejecuta y envia el correo.
¿Cómo lo hago para que se ejecute en segundo plano y cuando termine de procesar todo el wait.php envie el correo aunque haya cerrado la ventana del navegador?
Muchas gracias.