Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/10/2010, 10:43
julioregistros
 
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