Foros del Web » Programando para Internet » PHP »

puedo ejecutar un comando del sistema operativo des de php

Estas en el tema de puedo ejecutar un comando del sistema operativo des de php en el foro de PHP en Foros del Web. tengo un conjunto de instrucciones de mysql que ejecuto des de la consola o con el crontab. Principalmente son importaciones de datos que provienen de ...
  #1 (permalink)  
Antiguo 03/02/2004, 08:48
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 7 meses
Puntos: 0
puedo ejecutar un comando del sistema operativo des de php

tengo un conjunto de instrucciones de mysql que ejecuto des de la consola o con el crontab. Principalmente son importaciones de datos que provienen de otras aplicaciones y que se depositan en determinados directorios y que en el caso que la aplicacion que los genera (que es en windows y se cuelga de vez en cuando) lo pueda cargar desde cualquier sitio.

puedo hacer un script que me ejecute los comandos que ejecuto desde la consola?
  #2 (permalink)  
Antiguo 03/02/2004, 10:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. en principio puedes ejecutar comandos en la Shell (línea de comandos) de tu servidor usando los comandos própios para ese Sistema Operativo que use (no serán iguales si ese servidor corre en WIndows que en Linux .. por ejemplo).

Las funciones de PHP son:
exec() .. system() y afines. De que puedas ejecutarlas depende de la configuración y permisos de ejecución que tenga el usuario que use PHP (normalmente Apache si está como módulo de este o el que use si está como CGI).

Pero, .. si dices que tienes unas instrucciones para Mysql ..tal vez lo que tengas son comandos SQL que .. tal vez ahora los ejecutas en la consola (shell) de Msyql > ..si es así, esos comandos se pueden "lanzar" desde PHP y su función para Msyql:

mysql_query() .. al igual que ejecutas tus consultas típicas de SELECT, INSERT, UPDATE .. también puedes hacer todo lo que ya haces en tu consola de mysql> ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 03/02/2004, 11:38
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 7 meses
Puntos: 0
GRACIAS

miraré los comandos exec y system

pero efectivamente quiero ejectuar unos comandos sql pero usando linux se puede hacer
mysql nombredb < comandos
siendo comandos la lista de sentencias que ejecutarà mysql,
  #4 (permalink)  
Antiguo 03/02/2004, 18:11
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 6 meses
Puntos: 6
como comenta cluster antes de dar el paso de ejecutar llamadas al sistema. Prueba ver el rendimiento que obtienes ejecutando esas instrucciones desde las funciones de mysql que implementa php.
Obviamente la llamada al sistema tarda un tiempo en llevarse acabo pero a un asi la ejecucion del comando mysql por parte del sistema es mcuho mas rapida que hacer consultas desde php sobre todo cuando estas importando una gran cantidad de datos.
Ahora el problema en linux, es que hay un esquema de permisos que pùeden hacerte la vida dificil sobre todo por que el usuario que ejecuta el apache generalmente no tiene permisos para ejecuar nada. con lo cual uan llamada directa a system y derivados te marcara un error.
Lo que pùedes hacer es hacer uso de un wraper que haga la llamada al comando especifico uno que puedes usar es el comando sudo. con el cual le das permisos temporales al usuario del apache para ejecutar llamadas del sistema.
Obviamente tienes que tener a la mano la version mas reciente de este comando por los detalles de seguridad y que tengas acceso a root para instalar y compilar el sudo.
La llamada a este comando la puedes hacer con un popen o con proc_open.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:51.