(PECL yar >= 1.0.0)
Yar_Concurrent_Client::call — Registra una llamada concurrente
$uri,$method,$parameters = null,$callback = null,$error_callback = null,$options = nullRegistra una llamada RPC remota. La petición no se envía inmediatamente; todas las llamadas registradas se envían juntas mediante Yar_Concurrent_Client::loop(), y las respuestas se tratan a medida que llegan.
Nota:
Solo se admiten URIs HTTP y HTTPS. Las llamadas concurrentes se envían simultáneamente utilizando la interfaz multi-handle de curl, y el transporte por sockets TCP/Unix no proporciona esta facilidad.
uri
Dirección del servicio RPC, que comienza por
http:// o https://.
methodEl nombre del método del servicio remoto.
parametersLa lista de argumentos pasados al método remoto.
callback
Un callable invocado cuando llega la respuesta de esta
llamada, con dos argumentos: el valor de la respuesta y un
array callinfo que describe la llamada:
sequence — el número de secuencia devuelto
cuando se registró la llamadauri — la dirección del serviciomethod — el nombre del método remoto
Si se omite, se utiliza el callback de
Yar_Concurrent_Client::loop();
véase ese método para saber qué ocurre cuando no se indica ninguno.
error_callback
Un callable invocado cuando esta llamada falla, con tres
argumentos: el tipo de error (uno de los códigos
YAR_ERR_*), el mensaje de error y el
array callinfo descrito anteriormente. Si se
omite, se utiliza el error_callback de
Yar_Concurrent_Client::loop();
véase ese método para saber qué ocurre cuando no se indica ninguno.
options
Un array de opciones del cliente, indexado por las constantes
YAR_OPT_*, véase
Yar_Client::setOpt(). Se aplica únicamente a
esta llamada.
Devuelve el número de secuencia de la llamada registrada, un ID único que
empieza en 1 y que identifica la llamada. Devuelve
false cuando el cliente concurrente ya se encuentra dentro de
Yar_Concurrent_Client::loop() o cuando se alcanza
el máximo de 128 llamadas registradas; en ambos casos
se emite una advertencia. Devuelve null si la URI o el nombre del
método están vacíos, o si la URI no es una dirección HTTP(S), con una
advertencia.
<?php
function callback($retval, $callinfo)
{
var_dump($retval);
}
function error_callback($type, $error, $callinfo)
{
error_log($error);
}
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"), "callback");
/* Si no se especifica el callback, se utilizará el callback de loop() */
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"));
/* Este servidor acepta el empaquetador JSON */
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
/* Tiempo de espera personalizado */
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT => 1000));
/* Las peticiones todavía no se han enviado */