Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2008
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Ejecutar PHP desde delphi y esperar resultados...

Saludos amigos del club...

Tengo un programa en windows con postgreSQL; de este programa extraigo un listado de clientes para Internet (PHP y MySQL , más de 10.000 registros).

Tengo una vista en PgSQL, de la cual extraigo todo el código que se ejecutará en el servidor... pero esto es muy tedioso. (el servidor no es nuestro y la única herramienta disponible es PhpMyAdmin)

ahora, NO TODOS los registros se actualizan diariamente.

En el programa he logrado hacer que al actualizar un cliente (si lo desean) se actualice también en Internet; Abriendo una ventana de navegador pasando las variables en la URL... básico y escueto.

pero... quisiera hacerlo en bloque y no se como enviar a PHP y esperar a que termine para así continuar con el bloque.

¿Alguien que me ayude en esta duda, pls?
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #2  
Antiguo 30-05-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No me queda muy claro el asunto, te pido disculpas. A mí se me ocurre que, desde Delphi, es posible realizar peticiones HTTP POST, cuyas variables podría recibir el "script" PHP que fuera, para hacer con ellas lo que fuera menester. No se me ocurre otra cosa, ahora mismo, ya digo que no me quedó muy claro el asunto, y me disculpo de nuevo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 30-05-2008
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Aclarando...

es fácil...

cuando edito un cliente en el programa el me pregunta si deseo enviar los cambios a internet. entonces desde delphi ejecuto el navegador enviandole la URL del script PHP y el hace el resto.

Eso es con 1 solo cliente.

lo que quisiera es obviar ese paso y al final del día enviar los cambios en bloque (batch)

Clientes actualizados hoy:

cliente 1
cliente 2
cliente 3
...
cliente n

|Actualizar en Internet|

eso es lo que quisera hacer... el problema es al abrir la ventana del navegador... si se demora en abrir, si la conexion está lenta y cosas así el programa NO LO SABE y NO PODRA SABER cuando terminó de ejecutarse el script PHP para continuar con el siguiente registro.

Para el programa, la ejecución del bucle sería ininterrumpida, mientras que abrir ventanas de navegador, ejecutar el script y cosas así es mucho más demorado... y no será sincronizado.

por eso mi duda está en enviar la info al script y ESPERAR a que termine la ejecución para continuar...

me hice explicar?

---
He descargado el PHP4Delphi, intentando probar pero hasta ahora estoy leyendo la documentación.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #4  
Antiguo 30-05-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Que alguien me corrija, pero, creo que podrías usar el código de la respuesta HTTP. Un "script" de PHP podría incluir algo así:

Código PHP:
<?php

if(PuedoLlevarACaboLoQueQuiero()){
  
header("HTTP/1.0 200 OK");
    
// Resto de la respuesta
}else{
  
header("HTTP/1.0 500 Internal Server Error");
    
// Resto de la respuesta    
}

?>
Al hacer una petición HTTP a dicho "script", el mismo intenta realizar lo que se supone que tiene que hacer, y, en caso de conseguirlo, responde con un código HTTP 200, dando a entender que todo ha ido bien. En caso contrario, retorna un HTTP 500, indicando que hubo un problema.

No sé si este último código es el más apropiado, o incluso si podrías disponer tu propio código, pero, en todo caso, la idea es recoger dicho código de respuesta desde tu programa, de modo que sepas qué ha ocurrido en el servidor.

Luego el que hagas sucesivas peticiones "HTTP GET" (o "POST") o envíes los datos de los registros en una sola petición, supongo que depende de cómo te lo montes, quiero decir, desde el servidor sabrás qué recibes y qué hacer con lo que recibes.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 30-05-2008
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Gracias DEC,

Interesante... voy a hacer unas pruebas; Luego te cuento...
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #6  
Antiguo 30-05-2008
[Andreano] Andreano is offline
Miembro Premium
 
Registrado: sep 2006
Posts: 155
Poder: 18
Andreano Va por buen camino
Por lo que entendí, aquí mis sugerencias.


1 – Utilizar el componente TWebBrowser en su aplicación, este componente un evento llamado onDocumentComplete que es llamado después que la pagina fue generada.

2 – Cambiar su estructura de insertar clientes para webservices, asi puedes controlar mejor.

Saludos,
Andreano
Responder Con Cita
  #7  
Antiguo 02-06-2008
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Aqui les cuento....

Antes que todo GRACIAS por la ayuda que me dieron... rebacano

La solución la encontré echando mano del truco que me recomendaste (realizar peticiones HTTP POST).

De esta manera pude enviar las solicitudes al script PHP y el programa espera a que termine de cargar devolviendome el resultado ya sea en la cabecera o en el contenido de la web (más facil me es en el contenido de la web).



estó quedó así:

Código Delphi [-]
    qry.First;
    while not Qry.Eof do
    begin
      //Actualizar en Internet.
      Stream := TMemoryStream.Create;
      Campos := TStringList.Create;
      try
        Campos.Values['campo'] := Qry.FieldByName('field').AsString;
        ...

        //Accion en Internet.
        Post(PHPScript, Campos, Stream);
        ...
        Campos.Clear;

      finally
        Stream.Free;
        Campos.Free;
      end;//try.

      //siguiente registro.
      qry.Next;


Nuevamente GRACIAS.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #8  
Antiguo 02-06-2008
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Ademas...

en el código del truco cambias el nombre del agente y le damos mayor seguridad a la interacción entre el PHP y delphi...

Código Delphi [-]
  hNet:= InternetOpen('DelphiBot', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

Código PHP:
    if ($_SERVER['HTTP_USER_AGENT'] == "DelphiBot") {
      ...
    } else {
      echo 
"ACCESO DENEGADO";
    } 
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar DTS desde delphi 7.0 janexa Varios 8 28-01-2008 22:58:34
Esperar a señal software para ejecutar código modulay Varios 2 13-09-2007 00:56:13
Ejecutar Exe de mi Aplicacion y Esperar a que Termine spider_Ramon API de Windows 4 07-09-2005 01:07:01
ejecutar archivo y esperar que termine agustincs API de Windows 4 18-08-2004 22:53:21
Ejecutar el Word y esperar a que lo cierren Salomon Varios 1 22-04-2004 16:41:22


La franja horaria es GMT +2. Ahora son las 19:48:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi