2009-03-04 24 views
10

Tengo un script php bastante largo y cada vez que mi conexión a Internet se salta por un segundo, el navegador parece detener el script. No puedo sentarme durante 8 horas para que se ejecute el script, así que pensé que podría ejecutarlo a través de ssh y volver al día siguiente y obtener mi archivo de salida. Sin embargo, escribir simplemente el nombre de las secuencias de comandos en ssh no parece funcionar. ¿Hay algún comando especial para ejecutar scripts php a través de ssh?¿Cómo ejecuto un script php a través de SSH?

Respuesta

7

En general, usted debe ser capaz de ejecutar el script desde la línea de comandos como ésta

php myscript.php 

Hacerlo en un host remoto a través de SSH se podría hacer como esto

ssh [email protected].com "php myscript.php" 
+0

Y cualquier redirección necesaria. – strager

1

intento

php script.php. 

Si eso no funciona, usted tendría que localizar el ejecutable php y luego ejecutarlo.

Por cierto, puede utilizar la pantalla, por lo que si se pierde la conexión a la computadora, la secuencia de comandos aún se ejecuta.

+0

¿qué quieres decir con pantalla de uso? Nunca he oído hablar de eso –

+0

He explicado la pantalla en mi publicación: D – Mez

+0

Asumí que usas linux. Screen es un programa que mantiene los programas en ejecución incluso cuando el shell está cerrado. Puede restaurar fácilmente la sesión para que el script no se cancele. Ver http://www.gnu.org/software/screen/ – Ikke

0

Como alternativa, simplemente puede llamar al ignore_user_abort() y cerrar su navegador después de golpear la página.

+0

, excepto que esto no necesariamente funcionará, y PHP puede simplemente detenerse en su tiempo de espera. – Mez

+0

En realidad, funcionará. Si el límite de tiempo de PHP entra en juego, puede usar set_time_limit – Greg

+0

¿No ignore_user_abort solo funciona cuando php se ejecuta como un módulo de apache? – troelskn

19

Si su conexión a Internet se está cayendo, entonces esto probablemente también sea un problema en SSH, y bueno, tener una ventana SSH abierta no siempre es lo mejor que puede hacer (lo que sucede si se cierra accidentalmente) la ventana ssh?)

Sugeriría SSHing en el servidor, y luego ejecutaría un programa llamado "screen", que continuará funcionando independientemente de lo que ejecute dentro de él, incluso si su conexión cae.

Para ello, en primer SSH en el servidor, y escriba

screen

Esto cargará encima de la pantalla, pulse intro para omitir la pantalla de bienvenida

Ahora, ejecute el script PHP

php /path/to/your/php/script.php

esto comenzará PHP en funcionamiento,

Ahora puede cerrar la ventana si lo desea, y la secuencia de comandos siempre está en funcionamiento

Para volver a la sesión de pantalla, conectar con el servidor y ejecutar el comando

screen -raAD

que lo reconectará a su sesión, como si hubiera tenido la ventana abierta todo el tiempo.

Esto es realmente muy bueno para ejecutar scripts de largo aliento, o incluso para la ejecución de una sesión de IRC basado en la consola: D

4

Además de lo que todo el mundo dice, es probable que desee utilizar nohup también.

ssh [email protected] "nohup php script.php" 

De esa manera se va a mantener en funcionamiento incluso si su conexión ssh cae. También puede usar screen en lugar de nohup si lo desea.

0

nohup php -q /path-to-script/file.php & salida

ejecutará el archivo PHP y cerrar la consola sin necesidad de terminar el proceso.

Cuestiones relacionadas