elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  conexión ssh ejecutar un php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: conexión ssh ejecutar un php  (Leído 4,335 veces)
OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
conexión ssh ejecutar un php
« en: 21 Septiembre 2015, 13:15 pm »

Hola :
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
  1. include('Net/SSH2.php');
  2.    $server = "miservidor.es";
  3.    $username = "xxx";
  4.    $password = "xxx";
  5.    $ssh = new Net_SSH2($server);
  6.    if (!$ssh->login($username, $password)) {
  7.        exit('Login Failed');
  8.    }
  9.   $ssh->exec("nohup php carpetaprueba/prueba/wait.php &");
  10.  

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
  1. <?php
  2. print "<p>Comienzo</p>\n";
  3. for ($i = 0; $i < 2; $i++) {
  4.    print "<p>$i</p>\n";
  5. sleep(15);
  6. }
  7. print "<p>Final</p>\n";
  8.  
  9.  
  10. // El mensaje
  11. $mensaje = "Línea 1\r\nLínea 2\r\nLínea 3";
  12. // Si cualquier línea es más larga de 70 caracteres, se debería usar wordwrap()
  13. $mensaje = wordwrap($mensaje, 70, "\r\n");
  14. // Enviarlo
  15. mail('mail@dominio.es', 'Mi título', $mensaje.'...'.$i);
  16. ?>
  17.  

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.



« Última modificación: 21 Septiembre 2015, 16:39 pm por #!drvy » En línea

0roch1

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #1 en: 21 Septiembre 2015, 17:17 pm »

Utiliza

Código
  1.  

http://php.net/manual/es/function.set-time-limit.php


En línea

OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #2 en: 21 Septiembre 2015, 17:42 pm »

el set_time_limit no puedo modificar en servidores compartidos. En este caso en concreto 1and1.es
Si funcionase el timeout no necesaria hacer una conexion ssh y acceder al CLI php.
De todas formas gracias.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #3 en: 21 Septiembre 2015, 17:45 pm »

para ver si podemos hacer algo más simple...

que operación haces que dura tanto?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: conexión ssh ejecutar un php
« Respuesta #4 en: 21 Septiembre 2015, 18:00 pm »

¿Porque tienes un sleep en primer lugar?
En línea

OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #5 en: 21 Septiembre 2015, 18:10 pm »

Tengo el sleep(x) para simular como si el php durase mucho tiempo en terminar su proceso.
Es decir, el fichero wait.php tendrá otras lineas de código que no tienen nada que ver con el actual, en concreto lo usare para generar un pdf. Esta generación del fichero pdf lleva mucho tiempo de procesamiento, por eso toda la "historia" que quiero montarme.
Espero haberme explicado bien.

REsumiendo, básicamente lo que quiero es ejecutar un fichero php en segundo plano de forma que si cierro la ventana del navegador se siga ejecutando.

Gracias
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #6 en: 21 Septiembre 2015, 18:12 pm »

por qué no generas el pdf por partes... así con ajax vas llamando cada sección, tal que nunca supere 30 segundos
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #7 en: 21 Septiembre 2015, 18:22 pm »

Porque si lo hago así, luego me toca montar todas las partes en un único pdf. Se que hay librerias que lo hacen http://pdfmerger.codeplex.com/ pero no lo veo práctico.
Y porque también al tardar tanto tiempo en crear el pdf (aprox 3 - 5 min) es un coñazo tener al usuario esperando todo ese tiempo sin que se pueda cerrar el navegador.
Veo más práctico que introduzca su email y cuando termine de generarlo enviarselo.
« Última modificación: 21 Septiembre 2015, 18:24 pm por OssoH » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: conexión ssh ejecutar un php
« Respuesta #8 en: 21 Septiembre 2015, 18:40 pm »

son 3 a 5 minutos -.- no 8 horas... con un progress bar, no es gran cosa... puede tranquilamente usar otras pestañas porque no está usando banda
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: conexión ssh ejecutar un php
« Respuesta #9 en: 21 Septiembre 2015, 18:41 pm »

Tengo el sleep(x) para simular como si el php durase mucho tiempo en terminar su proceso.
Es decir, el fichero wait.php tendrá otras lineas de código que no tienen nada que ver con el actual, en concreto lo usare para generar un pdf. Esta generación del fichero pdf lleva mucho tiempo de procesamiento, por eso toda la "historia" que quiero montarme.
Espero haberme explicado bien.

REsumiendo, básicamente lo que quiero es ejecutar un fichero php en segundo plano de forma que si cierro la ventana del navegador se siga ejecutando.

Gracias

¿Pero porque quieres simular que dure mucho tiempo asi? Si estas preocupado por el max_execution_time de nada te sirve sleep porque no cuenta para max_execution_time. Desde consola PHP no tiene max_exeuction_time a menos que tu proveedor (el del ssh) haya puesto una regla para eso. Y si tienes acceso ssh, estas tan limitado que no puedes cambiar la configuracion de php? Desde consola no deberías tener este tipo de problemas. Cuando ejecutas el interprete de PHP tienes opcion inclusive de negar la configuración del php.ini.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como ejecutar programa en memoria sin ejecutar el archivo « 1 2 »
Programación Visual Basic
Sai-To 13 10,809 Último mensaje 25 Mayo 2008, 18:14 pm
por Sai-To
[SOLUCIONADO] Problema conexión Chat Java(funciona en LAN,no en conexión Remota) « 1 2 »
Java
-Localhost- 10 15,861 Último mensaje 24 Julio 2010, 20:15 pm
por Debci
Problemas conexion a servidor con batch y ejecutar una shell dentro del servidor
Scripting
andrespp 0 2,944 Último mensaje 13 Octubre 2011, 17:40 pm
por andrespp
Conexion por VPN y conexion estandar simultaneamente
Redes
Veleras 1 2,232 Último mensaje 24 Enero 2013, 23:46 pm
por bjw2kc
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines