Dutch PHP Conference 2027

Yar_Concurrent_Client::call

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::callRegistra una llamada concurrente

Descripción

public static function Yar_Concurrent_Client::call(
    string $uri,
    string $method,
    ?array $parameters = null,
    ?callable $callback = null,
    ?callable $error_callback = null,
    ?array $options = null
): int|false|null

Registra 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.

Parámetros

uri

Dirección del servicio RPC, que comienza por http:// o https://.

method

El nombre del método del servicio remoto.

parameters

La 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 llamada
  • uri — la dirección del servicio
  • method — 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.

Valores devueltos

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.

Ejemplos

<?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 */

Véase también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top