Buenos días Amigos del Foro,
Tengo una inquietud que me gustaría me puedan ayudar a solventar. Tengo un Servicio Web basado en Nusoap en el cual funciona bien al momento de realizar una consulta a una base de datos en Oracle para que me devuelva pocos registros, el problema es cuando el número de registros aumenta a n. Pueden ayudarme con información si es motivos de configuración o algún problema con el Servicio Web??
Muchas Gracias por su ayuda.
Dejo el código del Cliente.
Código PHP:
<?php
require_once('nusoap.php');
$wsdl="http://localhost/ws/SERVER.php?wsdl"; //url del webservice que invocaremos
$client=new nusoap_client($wsdl,'wsdl'); //instanciando un nuevo objeto cliente para consumir el webservice
$estudiante = $client->call('ListarEstudiante'); //llamando al metodo y recuperando el array de productos en una variable
//¿ocurrio error al llamar al web service?
if ($client->fault) { // si
echo 'No se pudo completar la operación';
die();
}else{ // no
$error = $client->getError();
if ($error) { // Hubo algun error
echo 'Error:' . $error;
}
}
echo "<div id='apDiv1' align='left'>
<table border='1'><tr>";
echo"<td>Id Estudiante</td>
<td>Cédula</td>
<td>Nombre</td>
<td>Apellido</td>
<td>Universidad</td>
<td>Departamento</td>
<td>Cod Pais</td>
<td>Email</td>
<td>Direccion</td>
<td>Telefono</td>
<td>Prefijo</td>
</tr>";
if(is_array($estudiante)){ //si hay valores en el array
for($i=0;$i<count($estudiante);$i++){
$id_estudiante=$estudiante[$i]['Id_Estudiante'];
$cedula=$estudiante[$i]['Cedula'];
$nombre=$estudiante[$i]['Nombre'];
$apellido=$estudiante[$i]['Apellido'];
$universidad=$estudiante[$i]['Universidad'];
$departamento=$estudiante[$i]['Departamento'];
$codpais=$estudiante[$i]['CodPais'];
$email=$estudiante[$i]['Email'];
$direccion=$estudiante[$i]['Direccion'];
$telefono=$estudiante[$i]['Telefono'];
$prefijo= $estudiante[$i]['Prefijo'];
echo"<tr >";
echo '<td>'.$id_estudiante.
'</td><td>'.$cedula.
'</td><td>'.$nombre.
'</td><td>'.$apellido.
'</td><td>'.$universidad.
'</td><td>'.$departamento.
'</td><td>'.$codpais.
'</td><td>'.$email.
'</td><td>'.$direccion.
'</td><td>'.$telefono.
'</td><td>'.$prefijo.
'</td></tr> ';
}
}else{
echo 'No hay estudiantes';
}
echo"</table></div>";
?>
y el Servidor.
Código PHP:
require_once('../nusoap/lib/nusoap.php');
$server = new soap_server;
$ns="http://localhost/ws"; // espacio de nombres; Sitio donde estara alojado el web service
$server->configurewsdl('WEB SERVICE'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;
$server->wsdl->addComplexType(
'ArregloEstudiante', // Nombre
'complexType', // Tipo de Clase
'array', // Tipo de PHP
'', // definición del tipo secuencia(all|sequence|choice)
'SOAP-ENC:Array', // Restricted Base
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Estudiante[]') // Atributos
),
'tns:Estudiante'
);
$server->wsdl->addComplexType('Estudiante', 'complexType', 'struct', 'all', '',
array(
'Id_Estudiante'=> array('name' => 'Id_Estudiante','type' => 'xsd:string'),
'Cedula' => array('name' => 'Cedula', 'type' => 'xsd:string'),
'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'),
'Apellido'=> array('name' => 'Apellido','type' => 'xsd:string'),
'Universidad' => array('name' => 'Universidad', 'type' => 'xsd:string'),
'Departamento' => array('name' => 'Departamento', 'type' => 'xsd:string'),
'CodPais'=> array('name' => 'CodPais','type' => 'xsd:string'),
'Email' => array('name' => 'Email', 'type' => 'xsd:string'),
'Direccion' => array('name' => 'Direccion', 'type' => 'xsd:string'),
'Telefono'=> array('name' => 'Telefono','type' => 'xsd:string'),
'Prefijo'=> array('name' => 'Prefijo','type' => 'xsd:string'),
)
);
/*METODO DEL WEB SERVICE*/
function ListarEstudiante($estado){
//aqui hago la consulta a la base
$i = 0;
$j=1;
while ($j <= 5) {
$toc[$i]['Id_Estudiante'] = $j;
$toc[$i]['Cedula'] = $j;
$toc[$i]['Nombre'] = $j;
$toc[$i]['Apellido'] = $j;
$toc[$i]['Universidad'] = $j;
$toc[$i]['Departamento'] = $j;
$toc[$i]['CodPais'] = $j;
$toc[$i]['Email'] = $j;
$toc[$i]['Direccion'] = $j;
$toc[$i]['Telefono'] = $j;
$toc[$i]['Prefijo'] = $j;
$i++;
$j++;
}
return $toc;
}
/************ REGISTRANDO EL METODO **************/
$server->register(
'ListarEstudiante', // Nombre del Metodo
array('estado' => 'xsd:string' ), // Parametros de Entrada
array('return' => 'tns:ArregloEstudiante') //Datos de Salida
);
/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input'));
$server->service($input);
exit;