Ver Mensaje Individual
  #7 (permalink)  
Antiguo 28/01/2008, 21:58
kimerop
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Llamada a una aplicacion desde php

Cita:
Iniciado por consigna Ver Mensaje
Hola buenas, resulta que estoy realizando el proyecto fin de carrera y tengo un pequeño problemilla.

El caso es que estoy haciendo una aplicacion de analítica web, hecha en c++. Y ahora estoy haciendo la interfaz grafica en php. El problema viene cuando desde php llamo al programa c++ con la orden system.
El programa se ejecuta correctamente y voy guardando en un fichero temporal el porcentaje de procesamiento del fichero log.
Pero el problema esta en que cuando hago la llamada, la pagina php no se carga, y claro a los 30sg, me da error. No habria alguna manera, de llamar al programa c++ y que quedara ejecutandose en segundo plano, cargandose la pagina php?
Y ademas, como podria hacer para sacar una barra de progreso en esta pagina, cogiendo el porcentaje que lleva la aplicacion desde el fichero status.
Espero que me podais hechar una mano, que llevo tiempo atascado aki.

Gracias y un saludo.
Saludos...

Mira puedes hacer lo siguiente:

Con respecto a lo que explicaste cree un archivo en C# (MONO) para linux,
que simularia (archivo.log)
"...analítica web, hecha en c++."
Este solo genera numeros aleatorios...

writing.cs
using System;
using System.IO;
namespace csharp_station.howto{
class TextFileWriter {
static void Main(string[] args) {
// Imprimo br
// create a writer and open the file
TextWriter tw = new StreamWriter("datos.log");
// write a line of text to the file //
Random rand = new Random();
//Lo echamos a andar indefinidamente
for(;;){
tw.WriteLine(rand.NextDouble());
tw.WriteLine("<br>"); // ESTO SE PUEDE AGREGAR DESDE READING
}

}
}
}
gmcs writing.cs
mono writing.exe
Posteriormente crear uno lector que se va a ejecutar desde php...

Este archivo es el unico que vas a crear ya que solo va accesar a los datos del fichero log.

"....El programa se ejecuta correctamente y voy guardando en un fichero temporal el porcentaje de procesamiento del fichero log."...


reading.cs

using System;
using System.IO;

namespace csharp_station.howto
{
class TextFileReader
{
static void Main(string[] args)
{

string[] readText = File.ReadAllLines("datos.log");
foreach (string s in readText)
{
Console.WriteLine(s);
}

/*
// create reader & open file
TextReader tr = new StreamReader("datos.log");
// read a line of text
Console.WriteLine(tr.ReadLine());
// close the stream
tr.Close();
*/
}
}
}
gmcs reading.cs


Desde php ejecutamos :

<?

print exec("date");
print "<br>";
print exec('mono reading.exe');

/***********************************************
************************************************
// print exec("mono writing.exe");
************************************************
************************************************
************************************************/
?>

La salida que obtengo aqui es algo asi:

Mon Jan 28 20:55:47 MST 2008
0.9562392920.560022115968178
0.998822958208072
0.71827728660697
0.531409646166214
0.174550135235558
0.526675751212368
0.804661527650739
0.176945238922231
0.709579101628428
0.219727242002137
0.415064679652017
0.443338754793321
0.680730388816786
0.0169070707712821
0.842444049121087
0.825576490175713
0.414728396765296
0.227580359311579
0.261970315716216
0.908712194258679
0.296150841422449
0.283986947165796
0.810774301090638
0.890783278686359
0.111907620966391
0.474582465586524
0.373925730760175
0.916491236964469
0.69871977376692
0.144254785098254
0.250650403672201
0.697371108782185
0.223802641138342
0.465545386758421
0.942183031673628
0.137516798049918
0.869291599313399
0.237301753478731
0.119628511424935
0.892508704630895
0.373939954384202
0.0544146774590084
0.986568065819595
0.077197495418227
0.0396013879401616
0.221581709674365
0.673777795710497
0.58050882936479


Espero y sirva de algo....