2010-04-28 38 views
8

Llamo a un script de python desde PHP.Llamar a Python desde PHP y obtener el código de retorno

El programa python debe devolver algún valor de acuerdo con los argumentos que se le pasen.

Aquí es un ejemplo de programa pitón, que le dará una idea básica de lo que estoy haciendo actualmente:

#!/usr/bin/python 
import sys 

#get the arguments passed 
argList = sys.argv 

#Not enough arguments. Exit with a value of 1. 
if len(argList) < 3: 
    #Return with a value of 1. 
    sys.exit(1) 

arg1 = argList[1] 
arg2 = argList[2] 

#Check arguments. Exit with the appropriate value. 
if len(arg1) > 255: 
    #Exit with a value of 4. 
    sys.exit(4) 
if len(arg2) < 2: 
    #Exit with a value of 8. 
    sys.exit(8) 

#Do further coding using the arguments------ 

#If program works successfully, exit with a value of 0 

Como se puede ver en el código anterior, mi objetivo básico es

  1. para que el programa python devuelva algunos valores (0,1,4,8 etc.) según los argumentos.
  2. Y luego, el programa PHP que realiza la llamada para acceder a estos valores devueltos y hacer la operación apropiada.

Actualmente he utilizado "sys.exit (n)", para tal fin.

¿Estoy en lo correcto al usar sys.exit, o necesito usar algo más?

¿Y también qué método existe en PHP para que pueda acceder al código de retorno de python?

Lo siento por la pregunta larga, pero es de esperar que le ayudará en la comprensión de que mi dilema

Gracias por tonelada

Respuesta

7

En PHP, puede ejecutar un comando y obtener el código de retorno utilizando exec.

El manual para exec dice el tercer parámetro es una variable en la que se almacenará el código de retorno, por ejemplo

exec('python blibble.py', $output, $ret_code); 

$ret_code será el código de retorno cáscara, y $output es una matriz de las líneas de texto impreso en std. salida.

Esto parece ser un uso apropiado para un código de retorno de lo que describió, es decir, 0 que indica éxito y> 0 códigos para varios tipos de errores.

+0

Muchas gracias por la función PHP (exec) para obtener los valores devueltos. Pero, también necesito confirmación en sys.exit (n). ¿Se devolverá el valor (n) a "$ ret_code"? ¿O debería usar otra forma de regresar y salir del programa Python? Gracias de nuevo – seaboy

+0

Simplemente, confirmó que sys.exit (n) devuelve el valor al shell. En Linux, se puede generar con "echo $?". En Windows: "echo% ERRORLEVEL%". No se pudo confirmar su valor en "$ ret_code", pero resolvió la parte python de mi problema. Gracias de nuevo – seaboy

+0

Sí, el valor de sys.exit debe almacenarse en el parámetro de código de retorno mediante el comando PHP exec. No sé cómo llamar a Python, pero lo uso para esto con Java y otros comandos que invoco a través de este método. – JAL

Cuestiones relacionadas