Foros del Web » Programando para Internet » PHP »

Ejecucion de un programa?

Estas en el tema de Ejecucion de un programa? en el foro de PHP en Foros del Web. Hola Maestros: fijense que necesite saber como puedo ejecutar otro programa dentro de codigo PHP, es decir, debo correr un sistema hecho en Fortran. Dentro ...
  #1 (permalink)  
Antiguo 09/12/2002, 10:11
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 22 años
Puntos: 1
Ejecucion de un programa?

Hola Maestros:

fijense que necesite saber como puedo ejecutar otro programa dentro de codigo PHP, es decir, debo correr un sistema hecho en Fortran.

Dentro de esto tengo otrto problema ya que a partir del resultado de una consulta genero un archivo de texto con el cual va a trabajar el programa en fortran es decir que con los datos del archivo generado va a trabajar el programa en fortran.

Aqui tengo un problema ya que genero archivos de acuerdo a la fecha y hora en que accesa un usuario a la pagina y asi los nombro es decir 20021209100932.doc en donde concateno la fecha y la hora actual de mi sistema para no tener problemas cuando entren mas de dos usuarios ahora mi problema es como hacer para decirle al sistema de Fortran con cual archivo trabajar me podrian ayudar con esto por favor.

gracias a todos.
  #2 (permalink)  
Antiguo 09/12/2002, 13:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ejecutar otra aplicación desde PHP .. lo puedes hacer via:

exec() .. o system() y funciones afines (ya sabes -> www.php.net/manual/en para mas información) ..

Estas funciones son para ejecutar y/o obtener el resultado de lo que genereran las aplicaciones ejecutadas ...

El problema de "concurrencia" que tienes con los nombres de ficheros que generas .. los puedes solucionar poniendo como nombre del fichero usando:

microtime()
Esto te genera segundos.microsegundos ... (tal cual lo ves aqui abajo de cada pagina del foro "Página generada en 0.30469406"

o generando un id unico y aleatorio ... lo puedes hacer con:

uniqid();
Eso, en conjunto con md5() (como el ejemplo de php.net propio de la funcion uniqid() .. obtienes un nombre de fichero unico e irrepetible (o en teoría xD).

Código PHP:
$token md5(uniqid("")); // no prefix
$better_token md5(uniqid(rand(),1)); // better, difficult to guess 
Un saludo,
  #3 (permalink)  
Antiguo 10/12/2002, 11:11
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 22 años
Puntos: 1
No sale la Ejecucion

Que tal Cluster:

fijate que no me sale la ejecucion de un programa dentro de mi carpeta html cree una que se llama PLOTEO dentro del cual se encuentra el programa ejecutable que quiero mandar a llamar desde mi script y lo hago de las 2 siguiente forma:

$comando = "PLOTEO/programa";
system($comando,$resultado);
if ($resultado){
ech "ERROR";
}


o bien

exec($comando,$resultado);

ahora este programa esta hecho en Fortran y lo que hace es que se compile otro programa y genere una imagen.gif pero no hace nada no se si sea por el modo seguro de php y si es asi me pueden decir como solucionar este problema o que es lo que estoy haciendo mal.

gracias por todo.
  #4 (permalink)  
Antiguo 10/12/2002, 12:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
La linea de comandos q usas para ejecutar esa aplicacion es solo .. "programa" ?¿ sin parametros .. es un ".bat"? (archivo de proceso por lotes)?

Q sistema operativo usas?

Si ese "programa" lo q hace es llamar a Fortran y complia no se q? .. no será mejor llamar a la aplicion ejecutable Fortran con los parametros del archivo q tiene q compilar y/o opciones necesarias? ..

$comando="fortran -opciones programa.nose";

Un saludo,
  #5 (permalink)  
Antiguo 10/12/2002, 14:01
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 22 años
Puntos: 1
Es un ejecutable

programa es un archivo ejecutable y lo que hace es que hace que se compile otro programa en un graficador llamado GRADS pero a qui tengo un problema por que me dice que no tengo permiso o no me puedo conectar al GRADs directamente desde la pagina no se por que podrias decirme que es lo que esta pasando.


con la ejecucuion del sistema ya quedo ahora es lo del graficador:

una vez hecho el grafico lo muestro en la pagina mediante un link a ese archivo pero no hace nada por lo ya antes mencionado.

gracias por todo.
  #6 (permalink)  
Antiguo 10/12/2002, 17:31
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 22 años
Puntos: 1
actualizar para mostrar los datos

Hola Cluster :

tengo un problema con el siguiente codigo lo de la ejecucion ya salio solo que ahora tengo que una vez creado los archivos y mostrar la imagen que genera actualizar la pagina para que me muestre el dato actual ya se que es por que primero ejecuto el programa pero si lo pongo despues de que genere los archivos me marca error haber si me puedes ayudar a situar bien en donde ejecutar el programa el codigo es el siguiente:


<?php
$hoy =date("His",time());
$nombre = $byr.$bmo.$bdy.$bhr.$hoy;
echo "$nombre";
$x = "";
$comando = "./ver";
system($comando,$resultado);
echo ">> $resultado >> ";
if ($resultado){
echo "ERROR $resultado"."<br>\n";
}
$link = mysql_connect("localhost","root","admin");
mysql_select_db("RADIOSONDEO",$link);
if ($mensaje == "TTAA-TTBB"){
$tabla = "TTAA".$estacion;
$sql = "SELECT Estacion,Fecha,PS,PP,HGT,TT,TD,DD,FF from $tabla where DAYOFMONTH(Fecha)= $bdy AND MONTH(Fecha) = ($bmo) AND YEAR(Fecha) = $byr AND HOUR(Fecha) = ($bhr)";
$result = mysql_query($sql,$link);
if ($row=mysql_fetch_array($result)){
mysql_field_seek($result,0);
$archivo = fopen($nombre.".txt","w");
$archivo2 = fopen("nom_sond.dat","w");
fputs ($archivo2,$nombre.".txt \n");
fclose($archivo2);
do{
$fecha = split('[- :]',$row[Fecha]);
for ($i=0;$i<=3;$i++) {
$x = $x.$fecha[$i];
}
$cadena = $row[Estacion]." ".$x." ".$row[PS]." ".$row[PP]." ".$row[HGT]." ".$row[TT]." ".$row[TD]." ".$row[DD]." ".$row[FF]."\n";
$x="";
if ($archivo){
fputs($archivo,$cadena);
}
}while($row = mysql_fetch_array($result));
fclose($archivo);
echo "<div align = 'center'>";
echo "<img src= ./sondeo.gif>";
echo "<p><a href = grafica.html>Volver</p> \n";
echo "</div>";
}else{
echo "<p> No se encontro ningun registro!</p> \n";
echo "<p><a href = grafica.html>Volver</p> \n";
}
}
?>

donde ver es el archivo a ejecutar y la imagen que muestro es sondeo.gif pero cuando entro la primera vez me muestra la imagen anterior asi que tengo que actualizar la pagina para que me muestre la imagen actual que genero el programa y no se en donde ejecutar el programa ya que como lo mando a ejecutar primero pues es por eso que no trabaja con los datos que estoy generando en ese momento.

espero si me puedas ayudar.
  #7 (permalink)  
Antiguo 10/12/2002, 18:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No entiendo....

Ese código q haces una consulta a una base de datos y generas un fichero con esos datos .... donde o de donde esa aplicación q quieres ejecutar necesita de esos datos para generar esas gráficas?

tu exec() o lo q uses debiras lanzarlo inmediatamente despues de que los datos se generen ... Solo puedes tener algunos problemas con el tiempo de proceso .. (no se si un exec() o system() o la funcion q empleas para ejecutar lo q necestias .. "espera" a q la aplicación termine y continua el proceso de PHP o se ejecuta en paralelo ...).

Un saludo,
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 14:13.