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 ) > 0 )
{
$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( rename( UPLOAD_ATTACHED_FILE_PATH . '/' . $row->file_name_audio, UPLOAD_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( rename( UPLOAD_ATTACHED_FILE_PATH . '/' . $row->file_name, UPLOAD_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 pausa, que estaba probando con 0.8 segundos, pero 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