Foros del Web » Programando para Internet » PHP »

Webservice PHP & NuSOAP

Estas en el tema de Webservice PHP & NuSOAP en el foro de PHP en Foros del Web. Que tal amigos, estoy con un problema que no lo he podoido resolver ni he podido dar con la razon exacta del mismo, si me ...
  #1 (permalink)  
Antiguo 25/10/2010, 09:59
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Webservice PHP & NuSOAP

Que tal amigos, estoy con un problema que no lo he podoido resolver ni he podido dar con la razon exacta del mismo, si me ayudan les estaria eternamente agradecido.

Bueno, les explico mi situacion y mi problema, estoy desarrolando un modulo en el cual tengo que actualizar informacion en un sistema X desde un sistema Y, la actualizacion la realizo logicamente con webservice atravez de nusoap, los webservice estan aparentemente bien configurados y desarrollados, segun las normas de nusoap, es mas!!!, los he probado individualmente y funcionan perfectamente bien!!!

Ahora el problema es que tengo que actualizar varios datos, y para esto utilizo un bucle de repeticion "while" y ahi es donde llamo al webservice para la actualizacion de cada dato, cuando el bucle pasa la primera vez no hay problema, todo muy bien, el problema es que cuando el bucle de repeticion "while" va por la segunda, tercera, cuarta... etc pasada, ahi el webservcice deja de responder, no responde para nada, y logicamente no termina de actualizar todos los datos, dentro del while al final de todo el proceso de actualizacion he puesto un sleep() de 1 segundo, y cuando pongo ese sleep de 1 segundo ahi me funciona medianamente bien, y digo medianamente bien porque despues de estar prueba y prueba, durante todo un dia hubo una vez que no me funciono, perro el resto del dia todo OK, ahora lo que quiero es que funcione 100% bien durante todo el tiempo, podria poner un tiempo mas largo pero este proceso se me va hacer demaciado lento y tampoco estaria 100% seguro que funcione bien y ademas esa no es una buena solucion.

Por favor alguien me puede ayudar con esto??? o alguien sabe a que se debe este problema???

Muchas gracias pro sus respuestas
  #2 (permalink)  
Antiguo 25/10/2010, 10:08
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Webservice PHP & NuSOAP

Saludos

Pienso que el error esta en como estas enviando los parametros al webservices, podrias postear algo de codigo para revisarlo.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 25/10/2010, 10:13
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Webservice PHP & NuSOAP

no, los datos son correctos, los parametros de los datos estan bien, es mas como explico, el mismo proceso funciona bien cuando agrego el sleep, es decir cuando pongo una pausa entre cada llamada al mismo webservice, si algo del webservice o la llamada al mismo estubieran mal, (codigo o datos) no funcionara aun si pusiera el sleep (pausa)

El problema es que algo como que no se avanza a cerrar la conexion del webservice d ela primera llamada o algo de eso no lo se, ya que poniendo la pausa es como que le da tiempo a que se cierre la conexion o algo de eso y ahi si funciona bien!!!
  #4 (permalink)  
Antiguo 25/10/2010, 10:20
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Webservice PHP & NuSOAP

Saludos

Pensaria entonces que el error no es tuyo sino del WS, ya que no deberias tener problemas de llamar la veces qeu creas necesario un metodo

Código PHP:
while () {
        
$transaccionId "1";
        
$parametros = array('transaccionId' => $transaccionId);
        
//Invocacion del WebServices
        
$result $client->call('consultar', array('parametros' => $parametros));


__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 25/10/2010 a las 10:34
  #5 (permalink)  
Antiguo 25/10/2010, 10:43
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Webservice PHP & NuSOAP

si lo mismo pensaba yo!!! que llamar a un webservice las veces que sean necesarias no seria problema, sinembargo estoy con ese problema y no se lo que es!!! y vuelvo y repito aparentemtent todo esta bien, ya que cuando lo llamo una sola vez todo funciona perfecto, tanto la llamada como el webservice, y tampoco es que estos datos esten relacionados para suponer que la modificacion del uno pueda afectar al correcto proceso de actualizacion del otro.

Es justamente por eso, proque se me acabaron las respuestas al posible problema que acudo a este foro y agradesco mucho tus respuestas Nano_

De todas maneras este es el codigo:

Código PHP:
    public function reorder$id_branch$date_evaluation$type_evaluation )
    {
        
$sql "SELECT * FROM gc_attachments WHERE id_branch='" $id_branch "' 
                        AND date_evaluation='" 
$date_evaluation "' 
                        AND type_evaluation='" 
$type_evaluation "'
                        ORDER BY order_file"
;
        
$rst $this->mysql->query$sql );
        if( 
mysql_num_rows$rst ) > )
        {
            
$ws = new ws$this->hostServer "xxxx.php?wsdl" );
            
$index 1;
            while( 
$row mysql_fetch_object$rst ) )
            {
                
$file_parts explode'.'$row->file_name );
                
$file_audio_parts explode'.'$row->file_name_audio );
                if( 
$index != $row->order_file )
                {
//aqui es la llamada al metodo que ejecuta el webservice y la primnera pasada funciona perfectamente, pero apartir de la segunda deja de funcionar y en la salida no vota nada(vacio)
                    
$result $ws->updateOrderFileAttachment$row->id$index );
                    
//aqui compruebo que si el webservice se ejecuto hago el resto del proceso, pero es aqui a la segunda pasada, como el webservice voto un gran vacio/blanco logicamente no va a completar el resto del proceso, es aqui como el webservice foto un vacio no realiza el resto del proceso
                    
if( $result["check"] )
                    {
                        
$sqlUpd "UPDATE gc_attachments SET order_file='" $index "' WHERE id='" $row->id "'";
                        
$this->mysql->query$sqlUpd );
                        
$newName strtolower$this->get_new_filename_attachment$row->id$this->array_filename[$row->type_evaluation] ) );
                        
$newName .= '.' $file_parts[1];
                        if( 
$row->type_evaluation == 'visit' && $row->file_name_audio )
                        {
                            
$newNameAudio strtolower$this->get_new_filename_attachment$row->id'AV' ) );
                            
$newNameAudio .= '.' $file_audio_parts[1];

                            if( 
renameUPLOAD_ATTACHED_FILE_PATH '/' $row->file_name_audioUPLOAD_ATTACHED_FILE_PATH '/' $newNameAudio ) )
                            {
                                
$ws->updateNameAttachments$row->id$newNameAudio'file_name_audio' );
                                
$sqlUpd "UPDATE gc_attachments SET file_name_audio='" $newNameAudio "' WHERE id='" $row->id "'";
                                
$this->mysql->query$sqlUpd );
                            }
                        }
                        
                        if( 
renameUPLOAD_ATTACHED_FILE_PATH '/' $row->file_nameUPLOAD_ATTACHED_FILE_PATH '/' $newName ) )
                        {
                            
$ws->updateNameAttachments$row->id$newName'file_name' );
                            
$sqlUpd "UPDATE gc_attachments SET file_name='" $newName "' WHERE id='" $row->id "'";
                            
$this->mysql->query$sqlUpd );
                        }
                        unset( 
$newNameAudio );
                    }
esta es la pausaque estaba probando con 0.8 segundospero igual pasa con una pausa de 1 segundo que seria sleep(1);
                    
usleep(800000);
                    unset( 
$result );
                }
                
$index++;
            }
        }
        
    } 
Este es la clase ws
Código PHP:
    require_once( INCLUDE_PATH 'nusoap.php' );

    class 
ws
    
{
        private 
$client;
        
        public function 
__construct$urlWS )
        {
            
//$urlWS = "http://www.midominioxxxx.com/server.php?wsdl";
            
$this->client = new nusoap_client$urlWS'wsdl'$proxyhost$proxyport$proxyusername$proxypassword);
        }
        
        public function 
updateOrderFileAttachment$id$order_file )
        {
            
$err $this->client->getError();
            if ( 
$err )
                
$retval '<h2>Constructor error</h2><pre>' $err '</pre>';
            else
            {
            
                
$this->client->setUseCurl($useCURL);
                
$this->client->loadWSDL();
                
$arg = array( "id" => $id
                                            
"order_file" => $order_file );
                
$result $this->client->call('updateOrderFileAttachment'$arg);
            }
            return 
$result;
        }
        
    } 
y este es el codigo del ws del server
Código PHP:
<?php

// Nota : Se debe tener desactivado el modulo php_soap
// ademas la variable allow_call_time_pass_reference debe estar en On

//require_once('nusoap/nusoap-0.7.2/lib/nusoap.php');

    
require_once(  "config.php" );
    require_once( 
INCLUDE_PATH "nusoap.php" );


$namespace 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];
$servidor = new soap_server;

$servidor->configureWSDL('Service',$namespace);
$servidor->wsdl->schemaTargetNamespace $namespace;

$servidor->wsdl->addComplexType(
    
'result',
    
'complexType',
    
'struct',
    
'all',
    
'',
            array(
                    
'check' => array('name' => 'check''type' => 'xsd:boolean'),
                    
'debug' => array('name' => 'debug''type' => 'xsd:string')
            )
);




$servidor->register(
    
'updateOrderFileAttachment',                       // Nombre del Metodo
    
array('id' => 'xsd:string''order_file' => 'xsd:string' ),        // input parameters
    
array('return' => 'tns:result'),        // Parametros de Salida
    
'urn:server',                      // namespace
    
'urn:server#updateOrderFileAttachment',                // soapaction
    
'rpc',                                // style
    
'encoded',                            // use
    
'Actualiza el orden de un archivo'            // Documentation
);

// [Webmethod()]
function updateOrderFileAttachment$id$order_file )
{
    
$result = array();

        
$mysql = new mysql();
        
$sql "UPDATE gc_attachments SET order_file='" $order_file "' WHERE id='" $id "'";
        
$rst $mysql->query$sql );
        
$result['check'] = 1;
        
$result['debug'] = $sql;
        
//        if( mysql_affected_rows( $rst ) )
//            $result['check'] = 1;
//        else
//            $result['check'] = 0;

    
    
return $result;    
}




$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA '';
$servidor->service($HTTP_RAW_POST_DATA);
?>
bueno espero que este todo, tube que quitar ciertas cosas ya que los archivos originales eran demaciado grandes, y degana iba a poner todo ya que podia causar confucion.

Espero que alguien me pueda ayudar cone ste problema, gracias por su ayuda

Etiquetas: nusoap, webservice
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 11:43.